pyspark节点数设置_pyspark常见问题小结

1.persist 与 cache 区别

persist源码内部调用了

persist(self, storageLevel=StorageLevel.MEMORY_ONLY),可以设置persist的级别;

cache() 内部调用了persist,设置persis水平为MEMORY_ONLY

def cache(self):

"""

Persist this RDD with the default storage level (C{MEMORY_ONLY}).

"""

self.is_cached = True

self.persist(StorageLevel.MEMORY_ONLY)

return self

2.输出压缩格式方法

df.saveAsTextFile(savepath, compressionCodecClass="org.apache.hadoop.io.compress.GzipCodec")

3.sc.wholeTextFiles 与 sc.textFile

sc.textFiles(path) 能将path 里的所有文件内容读出,以文件中的每一行作为一条记录的方式;

sc.wholeTextFiles 返回的是[(key, val), (key, val)...]的形式,其中key是文件路径,val是文件内容,这里我们要注意的重点是:每个文件作为一个记录!这说明这里的 val 将不再是 list 的方式为你将文件每行拆成一个 list的元素, 而是将整个文本的内容以字符串的形式读进来,也就是说val = '...line1...\n...line2...\n' 这时需要你自己去拆分每行.

4.aggregateByKey用法

aggregateByKey(zeroValue,seqFunc,combFunc,numPartitions=None, partitionFunc=)

用于对key进行聚合的转化操作。

参数:

zeroValue: 初始化参数,一般设置为不影响后面函数的计算,例如如果是累加就初始化为0,如果是list累加,就初始化为[]等等。

seqFunc: 元素操作

combFunc:聚合操作

numPartitions: 分区数量

例:

x = sc.parallelize([('B',1),('B',2),('A',3),('A',4),('A',5)])

zeroValue = [] #初始元素

mergeVal = (lambda aggregated, el: aggregated + [(el,el**2)])

mergeComb = (lambda agg1,agg2: agg1 + agg2 )

y = x.aggregateByKey(zeroValue,mergeVal,mergeComb)

y.collect()

Out[59]: [('B', [(1,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值