大数据Spark “蘑菇云”行动补充内容第70课: Spark SQL代码实战和性能调优
dataframe:
Row是没有类型的,因为Row中的所有成员都被看着Object类型!!!untyped;编译器识别不了类型
dataSet:类型不对,编译器立即报错的
强烈的建议:Spark处理的数据格式尽量是Json、Parquet、AVRO
重要技巧:
先读如文本log,txt,将普通文本保存为Parquet,再读入parquet,效率提高很多。体积更小,效率更高。
registerTable与registerTmptable的区别:
registerTmptable只是一个引用 ,一个视图 registerTmptable生命周期和spark sql context一致,spark sql结束了 ,registerTmptable也结束了
spark sql调优 :
1、spark.sql.shuffle.partitions=200 这个有用。
2、默认partition是128M,可以调大一点
spark.sql.files.maxPartitionBytes=128M 调成256M
3、很多小文件浪费task,合并成一个task中,提高处理性能,将值调大。
spark.sql.files.openCostInBytes=4M
4、两个表shuffle,如join。这个最有用,经常使用的。
spark.sql.autoBroadcastJoinThreshold 默认是10M,调成100M,甚至是1G。




