我使用pyspark-redshift通过pyspark连接到Redshift,即
sparkConf = SparkConf()
sc = SparkContext(conf=sparkConf)
sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", 'AWS_KEY_ID')
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", 'AWS_KEY')
sql_context = SQLContext(sc)
sql_context.getConf("spark.sql.shuffle.partitions", u"5")
df = sql_context.read \
.format("com.databricks.spark.redshift") \
.option("url", "jdbc:redshift://example.redshift.amazonaws.com:5439/agcdb?user=user&password=pwd") \
.option("dbtable", "table_name") \
.option('forward_spark_s3_credentials',True) \
.option("tempdir", "s3n://bucket") \
.load()
当我比较查询的运行时间时,例如pyspark和Redshift直接300k行我发现没有区别。
我读到配置 spark.sql.shuffle.partitions 应该更改为小于默认值= 200,具体取决于数据帧的大小。
我应该检查哪些重要配置/哪些人看到有所作为?