我们正在使用Spark SQL的内存sql功能来加入和解析一些本地数据文件,然后再将其上传到别处。虽然我们对功能感到满意,但我们还是想调整配置以挤出一些额外的性能。
我们没有集群,但可能有3个单独的节点来自S3的所有流文件,分别解析它们(它们不依赖于任何其他外部文件)并上传它们。不幸的是我们正在使用Java API。
这些是我正在尝试的配置,任何帮助都会很棒。
(Every RDD is being cached)
spark.sql.inMemoryColumnarStorage.compressed true
spark.sql.inMemoryColumnarStorage.batchSize 20000(doubled)
spark.sql.autoBroadcastJoinThreshold 10485760
spark.sql.shuffle.partitions 10(since its a local process, reducing from 200)
答案 0 :(得分:1)
您也可以设置以下属性,以确保在触发查询时根据列统计信息修剪批次: -
spark.sql.inMemoryColumnarStorage.partitionPruning true
注 - 就Spark 1.2而言,这是属性名称。对于1.1,我记得属性名称有点不同。如果您使用1.1,请检查相同内容。