了解 PySpark 中的 RDD(来自并行化)

Posted

技术标签:

【中文标题】了解 PySpark 中的 RDD(来自并行化)【英文标题】:Understanding RDD in PySpark (from parallelize) 【发布时间】:2021-01-28 06:07:08 【问题描述】:

我是 PySpark(或 Spark)的新手。我将 Python 列表转换为 RDD

name_list_json = [ '"name": "k"', '"name": "b"', '"name": "c"' ]
name_list_rdd = spark.sparkContext.parallelize(name_list_json)
print(name_list_rdd)

这会在 PythonRDD.scala:262 的 readRDDFromFile 处打印出“ParallelCollectionRDD[2]”。这里有两个问题:

    ParallelCollectionRDD[2] 中的 2 是什么意思?是分区数吗?

    还有为什么 readRDDFromFile 会出现在这里?是不是因为python列表先保存到文件,然后再从文件中加载?

【问题讨论】:

【参考方案1】:
    是的,它的分区数默认设置为 2,您可以使用 repartition() 对其进行重新分区 它实际上是指 readRDDFromFile 方法。如果要打印内容,需要在打印之前执行 collect() 之类的操作

【讨论】:

以上是关于了解 PySpark 中的 RDD(来自并行化)的主要内容,如果未能解决你的问题,请参考以下文章

映射 dict(来自 rdd)以递归方式更改 Python/PySpark 中的列名

PySpark之RDD操作

PySpark|RDD编程基础

如何使 pyspark 作业在多个节点上正确并行化并避免内存问题?

SqlContext 导入和并行化 Pyspark 中的错误

使 Spark 结构化流中的 JSON 可以在 python (pyspark) 中作为没有 RDD 的数据帧访问