做网站时间,老虎淘客系统可以做网站吗,wordpress搜索分类,天津市建设工程交易管理网站目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇
10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第… 目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇
10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第一篇)11-pyspark的RDD的变换与动作算子总结(PySpark实战笔记系列第二篇))12-pyspark的RDD算子注意事项总结(PySpark实战笔记系列第三篇) 相近算子异同总结
相近变换算子异同
foreach和foreachPartition
在应用foreachPartition操作时定义的函数f在函数体中打印值时需要用for x in iter进行循环。foreach操作则可直接用print(x)打印一般来说利用foreachPartition效率比foreach要高foreachPartitions操作是一次性处理一个partition的数据。 fold和reduce
fold函数和reduce函数功能是相同的差别在于fold可以提供一个初始值来进行聚合eg有四个元素[1,2,3,4]reduce是直接把四个元素累加即sumfold则可以设定一个初始值再进行累加比如初始值是10则就是101234这样的累加。
coalesce和repatition repartition()方法就是coalesce()方法shuffle为true的情况。 如果要减少分区数量建议采用rdd.coalesce(numPartitions, false)方法这样可以避免shuffle导致数据混洗从而提高计算效率 【备注】在实际计算中有时可能需要重新设置RDD的分区数量如果要处理的数据量小那么默认的分区可能比较多这就可能导致计算速度比较慢不同分区之间的任务调度时间比计算数据本身耗时因此在计算过程中可以设置一个比较合理的分区数从而提高计算效率。
相近动作算子异同
cache和persist
rdd.cache()在RDD对象上进行缓存操作后续的RDD操作会直接从内存中加载数据进行计算缓存操作rdd.persist(storageLevel)它可以指定存储级别storageLevel。
算子注意事项
需要注意的变换算子
takeSample操作会将RDD整个加载到driver端的内存中因此takeSample操作应用需在RDD数据不大的情况下。randomSplit操作这种随机分割在一些数据挖掘或者机器学习算法中非常有用由于这些算法需要数据的训练集合和测试集合因此需要把总的数据集合进行随机切分比如70%用于训练30%用于测试。Python 3环境下在Spark集群上使用distinct()、reduceByKey()和join()等几个函数时可能会触发PYTHONHASHSEED异常即Randomness of hash of string should be disabledvia PYTHONHASHSEED此时可以在在spark-defaults.conf设置spark.executorEnv.PYTHONHASHSEED0。cartesian操作如果rdd1和rdd2元素个数比较多直接进行cartesian计算可能会出现内存不足的情况。
需要注意的动作算子
collect操作对于少量RDD数据的观察非常有用海量会引起内存不足等情况。因为collect操作会将RDD数据汇总到一处如果数据量非常大那么可能会出现内存不足等情况因此不适合海量数据的查看。saveAsTextFile操作数据保存当设定的目录不存在时执行此操作则会报错。生成的数据是多个文件组成的。 参考文档
https://spark.apache.org/docs/latest/api/python/reference/pyspark.html《Python大数据处理库PySpark实战》 博主写博文就是方便对自己所学所做的事做一备份记录或回顾总结。欢迎留言沟通学习。 刚开始接触请多指教欢迎留言交流