python连接spark_python如何通过pyspark的API操作spark

park安装略,下载解压配置下就OK我使用的是spark-2.2.0-bin-hadoop2.7安装完毕后需要配置一下SPARK_HOME:SPARK_HOME=C:\spark\spark-2.2.0-bin-hadoop2.7Path里也要记得添加一下:Path=XXXX;%SPARK_HOME%\bin;Python与Spark交互主要用到pyspark这个模块,所以需要准备好扩展包,详细...
摘要由CSDN通过智能技术生成

park安装略,下载解压配置下就OK 我使用的是spark-2.2.0-bin-hadoop2.7

安装完毕后需要配置一下SPARK_HOME:

SPARK_HOME=C:\spark\spark-2.2.0-bin-hadoop2.7

Path里也要记得添加一下:

Path=XXXX;%SPARK_HOME%\bin;

Python与Spark交互主要用到pyspark这个模块,所以需要准备好扩展包,详细请参考《

Whl安装好后,能得到一个py4j文件夹,但是还需要pyspark模块这个文件夹里的内容,pyspark的获得更简单,直接去复制spark-2.2.0-bin-hadoop2.7/python/pyspark就好了。

PS:在某些版本的pyspark调用时会出现,自己稍微查下原因,网上都有配套的py文件可以覆盖,这里不是本文的重点,所以略过。

我们在《Spark原理详解》中介绍过,RDD分为转化(transformation)和动作(action)两种操作。RDD是基于当前的partitions生成新的partitions;动作是基于当前的partitions生成返回对象(数值、集合、字典等)。所以在通过python调用spark的API时需要搞清楚返回值是什么。如果返回的是partitions,调用collect()函数可以拿到封装后的数据集,分区部分对客户端是透明的,也可以调用glom()来关心具体的分区情况。如果调用的是action那么就简单得多,API直接返回结果内容。

Map、Reduce API:

最典型,也是最基本的入门API

from pyspark import SparkContext

sc = SparkContext('local')

#第二个参数2代表的是分区数,默认为1

old=sc.parallelize([1,2,3,4,5],2)

newMap = old.map(lambda x:(x,x**2))

newReduce = old.reduce(lambda a,b : a+b)

print(newMap.glom().collect())

print(newReduce)

[[(1, 1), (2, 4)], [(3, 9), (4, 16), (5, 25)]]

15

SparkContext是代码的核心,初始化时需要设置spark的启动类型,分为local、Mesos、YARN、Standalone模式(详见

Map和reduce里都要设置一个function,我们这里用了lambda匿名函数来实现。从结果可以看将前两和后三个分别放在了1个分区中,reduce是个action直接返回的是key的sum。

预留问题:能否reduce按第二行进行求和合并,how?

flatMa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值