如何在pyspark 1.6.1中将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',

在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','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