通过下推提高性能
Spark 连接器自动应用谓词和查询下推来优化性能。有了这种支持就意味着,如果您在查询中使用支持的函数,Spark 连接器会将该函数转换成 SQL 查询,并在 Amazon Redshift 中运行该查询。这种优化会减少需要检索的数据,因此 Apache Spark 可以处理更少的数据并获得更好的性能。默认情况下,自动激活下推。要停用它,请将 autopushdown
设置为 false。
import sqlContext.implicits._val sample= sqlContext.read .format("io.github.spark_redshift_community.spark.redshift") .option("url",jdbcURL ) .option("tempdir", tempS3Dir) .option("dbtable", "event") .option("autopushdown", "false") .load()
下推支持以下函数。如果您使用不在此列表中的函数,Spark 连接器将在 Spark 中(而不是在 Amazon Redshift 中)执行此函数,从而导致性能未优化。有关 Spark 中函数的完整列表,请参阅内置函数
-
聚合函数
-
avg
-
count
-
max
-
min
-
sum
-
stddev_samp
-
stddev_pop
-
var_samp
-
var_pop
-
-
布尔运算符
-
in
-
isnull
-
isnotnull
-
contains
-
endswith
-
startswith
-
-
逻辑运算符
-
and
-
or
-
not (or !)
-
-
数学函数
-
+
-
-
-
*
-
/
-
- (unary)
-
abs
-
acos
-
asin
-
atan
-
ceil
-
cos
-
EXP
-
floor
-
greatest
-
least
-
log10
-
pi
-
pow
-
round
-
sin
-
sqrt
-
tan
-
-
其他函数
-
cast
-
coalesce
-
decimal
-
if
-
in
-
-
关系运算符
-
!=
-
=
-
>
-
>=
-
<
-
<=
-
-
字符串函数
-
ascii
-
lpad
-
rpad
-
translate
-
upper
-
lower
-
length
-
trim
-
ltrim
-
rtrim
-
like
-
substring
-
concat
-
-
日期和时间函数
-
add_months
-
date
-
date_add
-
date_sub
-
date_trunc
-
时间戳
-
trunc
-
-
数学运算
-
CheckOverflow
-
PromotePrecision
-
-
关系运算
-
Aliases(例如,AS)
-
CaseWhen
-
Distinct
-
InSet
-
联接和交叉联接
-
Limits
-
Unions,union all
-
ScalarSubquery
-
Sorts(升序和降序)
-
UnscaledValue
-