pySpark 使用键/值从 RDD 创建 DataFrame

Posted

技术标签:

【中文标题】pySpark 使用键/值从 RDD 创建 DataFrame【英文标题】:pySpark Create DataFrame from RDD with Key/Value 【发布时间】:2015-05-02 20:36:09 【问题描述】:

如果我有一个键/值的 RDD(键是列索引),是否可以将其加载到数据框中? 例如:

(0,1), (0,1), (0,2), (1,2), (1,10), (1,20), (3,18), (3,18), (3,18)

并让数据框看起来像:

1,2,18
1,10,18
2,20,18

【问题讨论】:

【参考方案1】:

是的,这是可能的(使用 Spark 1.3.1 测试):

>>> rdd = sc.parallelize([(0,1), (0,1), (0,2), (1,2), (1,10), (1,20), (3,18), (3,18), (3,18)])
>>> sqlContext.createDataFrame(rdd, ["id", "score"])
Out[2]: DataFrame[id: bigint, score: bigint]

【讨论】:

这是否等同于rdd.toDF( ["id", "score"]) 'RDD' 对象没有属性 'toDF' 。面临这个错误 我使用的是 1.6 spark 和 pyspark。无法加载 sql.SQLContext 并从中创建 DataFrame。【参考方案2】:
rdd = sc.parallelize([(0,1), (0,1), (0,2), (1,2), (1,10), (1,20), (3,18), (3,18), (3,18)])

df=rdd.toDF(['id','score'])

df.show()

答案是:

+---+-----+
| id|score|
+---+-----+
|  0|    1|
|  0|    1|
|  0|    2|
|  1|    2|
|  1|   10|
|  1|   20|
|  3|   18|
|  3|   18|
|  3|   18|
+---+-----+

【讨论】:

以上是关于pySpark 使用键/值从 RDD 创建 DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 使用函数创建多索引配对 RDD

在 pyspark 中使用 RDD 从字典创建数据框

如何在 Pyspark 中将 Pair RDD Tuple 键转换为字符串键? [关闭]

pyspark - 使用 RDD 进行聚合比 DataFrame 快得多

来自 RDD 的每个键的 PySpark 不同列表

基于 Pyspark 中的键加入 RDD