spark2 sql源码分析

要成为spark高手,必须阅读spark 源码,掌握scala 。为什么选择sparkSQLShark和sparkSQL然而 , 随着Spark的发展,sparkSQL作为Spark生态系统的一员不断发展,不再受hive的限制,只兼容Hive;Hiveonspark是hive的一个开发计划,以spark作为hive的底层引擎之一 , 也就是说,hive将不再局限于一个引擎,而是可以采用mapreduce、Tez、spark等引擎 。

1、Kudu:SparkSQL操作Kudu【spark2 sql源码分析】 Abstract: SparkSQL , Kudu参考介绍sparkcore_2.11 , spark sql_2.11,kudu spark2_2.11,hadoopclient依赖包指定kudu.master,kudu.table,如果读取超时,添加kudu.operation.timeout.ms参数或者写数据 , 可以使用dataframe的write方法,也可以使用kuduContext的updateRows,insertRows , upsertRowsinsertIgnoreRows方法直接调用dataframe的write方法指定kudu.master,kudu.table,只支持append模式,自动更新现有键的数据,调用kuduContext的upsertRows方法 。效果和dataframe调用writeappend模式 , 调用kuduContextinsertRows和insertIgnoreRows方法是一样的 。如果插入的数据键已经有insertRows,它将直接报告一个错误 。

2、2019-03-05SparkSQL集群性能调优CheatSheet0 。买一台高性能的机器,加node 1 。将磁盘文件的预读值设置为16384,并使用linux命令:echo 16384 >/sys/block/{ disk name }/queue/read _ ahead _ kb2 。Spark任务序列化只支持JavaSerializer,数据序列化支持JavaSerializer和KryoSerializer 。KryoSerializer可以达到JavaSerializer的十倍 。

3、Spark数据倾斜及其解决方案本文对数据偏斜的危害、现象、原因等方面进行了探讨,由浅入深地阐述了Spark数据偏斜及其解决方案 。首先,什么是数据偏斜?对于Spark/Hadoop这样的分布式大数据系统来说,数据量大并不可怕 , 但数据偏斜就可怕了 。对于分布式系统 , 理想情况下 , 随着系统规模(节点数)的增加,整体应用耗时线性下降 。如果一台机器处理一大批数据需要120分钟,当机器数量增加到3台时 , 理想的耗时是120/340分钟 。

不幸的是,很多时候,任务的分配是不均匀的,甚至是不均匀的,以至于大部分任务都分配到了个别机器上,其他大部分机器只占总数的一小部分 。例如 , 一台机器处理80%的任务 , 另外两台机器各处理10%的任务 。“不苦多苦不均”是分布式环境下最大的问题 。意味着计算能力不是线性扩张,而是存在短板效应:一个阶段所花费的时间是由最慢的任务决定的 。

    推荐阅读