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 中将 Pair RDD Tuple 键转换为字符串键? [关闭]