Spark SQL 单节点进程的最佳配置?
Spark SQL optimal configurations for a single node process?
我们正在使用 Spark SQL 强大的内存 sql 功能来加入和解析一些本地数据文件,然后再将它们上传到其他地方。虽然我们对功能感到满意,但我们想调整配置以挤出一些额外的性能。
我们没有集群,但可能有 5 个单独的节点,所有节点都从 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)
您还可以设置以下 属性,这将确保在触发查询时根据其列统计信息对批次进行修剪:-
spark.sql.inMemoryColumnarStorage.partitionPruning true
注意 - 就 Spark 1.2 而言,这是 属性 名称。对于 1.1,我记得 属性 名称有点不同。如果您使用的是 1.1,请检查相同内容。
我们正在使用 Spark SQL 强大的内存 sql 功能来加入和解析一些本地数据文件,然后再将它们上传到其他地方。虽然我们对功能感到满意,但我们想调整配置以挤出一些额外的性能。
我们没有集群,但可能有 5 个单独的节点,所有节点都从 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)
您还可以设置以下 属性,这将确保在触发查询时根据其列统计信息对批次进行修剪:-
spark.sql.inMemoryColumnarStorage.partitionPruning true
注意 - 就 Spark 1.2 而言,这是 属性 名称。对于 1.1,我记得 属性 名称有点不同。如果您使用的是 1.1,请检查相同内容。