Spark累加器实验-创新互联
以下代码用 Pyspark + IPython 完成
创新互联是一家集网站建设,闻喜企业网站建设,闻喜品牌网站建设,网站定制,闻喜网站建设报价,网络营销,网络优化,闻喜网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。统计日志空行的数量:
读取日志,创建RDD:
myrdd = sc.textFile("access.log")
不使用累加器:
In [68]: s = 0 In [69]: def f(x): ...: global s ...: if len(x) == 0: ...: s += 1 ...: In [70]: myrdd.foreach(f) In [71]: print (s)
得出结果为:
0
原因是python 的变量,即使是全局变量不能应用在各个计算进程(线程)中同步数据,所以需要分布式计算框架的变量来同步数据,Spark 中采用累加器来解决:
使用累加器
In [64]: s = sc.accumulator(0) In [65]: def f(x): ...: global s ...: if len(x) == 0: ...: s += 1 ...: In [66]: myrdd.foreach(f) In [67]: print (s)
得出正确结果:
14
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页名称:Spark累加器实验-创新互联
文章出自:http://hbruida.cn/article/cepisj.html