Spark 2.0内幕深度解密

Spark 2.0更新要点

 1. 支持 sql 2003,支持子查询
 2. DataFrame是DataSet中的一种特例,val dataFrame = DataSet[Row]
     SQL是没类型的,DataFrame是弱类型的,DataSet是强类型的,
     所以如果使用DataSet的话在2.0是不可以用python来写代码的!
 3. 第二代钨丝计划:添加了whole stage code generation.  可以使CPU更加有效地利用。
 4. Structured Streaming是Spark 2.x功能上最让人兴奋的变化。(以后补充)

认识1

大数据公司中90%左右都是在基于Hive做SQL多维度数据分析,现在的主要的潮流是Spark SQL+Hive;
剩下10%做流处理和机器学习,图计算少之又少,国内主要是腾讯和阿里;

认识2

从Spark 2.0开始,Spark本身成为了编译器.这可以从whole stage code generation看出来。
CPU浪费时间的地方主要有两处:
第一:Virtual function call的调用;
        虚方法的调用,操作硬件从汇编到C到JAVA等不断抽象,也就不断含蓄,这也就使得一条指令多出了一些无用的曲折。   
        code generation可以对其进行优化,从而使CPU更有效率。     
第二:CPU要基于内存读写数据也会花费大量的时间消耗;
    在RDD中计算是通过iterator的hasNext,next方法来不断计算的,如果有一万条,那方法至少要调用2万次。
    这就不如直接使用for循环,Loop Unrolling,   SIMD有效率。
    code generation可以通过更有效的方式将数据放到寄存器中,从而使CPU更有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值