如何在pyspark 1.6.1中将rdd转换为数据帧?
在pyspark 1.6.1中有没有关于如何将rdd转换为dataframe并将dataframe转换回rdd的示例?如何在pyspark 1.6.1中将rdd转换为数据帧?,pyspark,rdd,Pyspark,Rdd,在pyspark 1.6.1中有没有关于如何将rdd转换为dataframe并将dataframe转换回rdd的示例? toDF()不能在1.6.1中使用吗 例如,我有这样一个rdd: data = sc.parallelize([('a','b','c', 1,4), ('o','u','w', 9,3), ('s','q','a', 8,6), ('l','g','z', 8,3), \ ('a','b','c', 9,8), ('s','q',
toDF()
不能在1.6.1中使用吗
例如,我有这样一个rdd:
data = sc.parallelize([('a','b','c', 1,4), ('o','u','w', 9,3), ('s','q','a', 8,6), ('l','g','z', 8,3), \
('a','b','c', 9,8), ('s','q','a', 10,10), ('l','g','z', 20,20), ('o','u','w', 77,77)])
如果由于某种原因无法使用.toDF()方法,我建议的解决方案是:
data = sqlContext.createDataFrame(sc.parallelize([('a','b','c', 1,4), ('o','u','w', 9,3), ('s','q','a', 8,6), ('l','g','z', 8,3), \
('a','b','c', 9,8), ('s','q','a', 10,10), ('l','g','z', 20,20), ('o','u','w', 77,77)]))
这将创建一个名为“\n”的DF,其中n是列的编号。如果您想重命名这些列,我建议您查看以下帖子:。但你需要做的就是:
data_named = data.selectExpr("_1 as One", "_2 as Two", "_3 as Three", "_4 as Four", "_5 as Five")
现在让我们看看DF:
data_named.show()
这将输出:
+---+---+-----+----+----+
|One|Two|Three|Four|Five|
+---+---+-----+----+----+
| a| b| c| 1| 4|
| o| u| w| 9| 3|
| s| q| a| 8| 6|
| l| g| z| 8| 3|
| a| b| c| 9| 8|
| s| q| a| 10| 10|
| l| g| z| 20| 20|
| o| u| w| 77| 77|
+---+---+-----+----+----+
编辑:请重试,因为您应该能够在spark 1.6.1中使用.toDF()我看不出为什么在pyspark for spark 1.6.1中不能使用
rdd.toDF
。请查看spark 1.6.1 python文档,例如toDF()
:
按照您的要求,
rdd = sc.parallelize([('a','b','c', 1,4), ('o','u','w', 9,3), ('s','q','a', 8,6), ('l','g','z', 8,3), ('a','b','c', 9,8), ('s','q','a', 10,10), ('l','g','z', 20,20), ('o','u','w', 77,77)])
#rdd to dataframe
df = rdd.toDF()
## can provide column names like df2 = df.toDF('col1', 'col2','col3,'col4')
#dataframe to rdd
rdd2 = df.rdd