我的RDD如下所示。我试图将其转换为python(pyspark)中的[' TS',' val',' Key']的数据框。任何帮助都值得赞赏,因为我很新。
root
|-- val: array (nullable = true)
| |-- element: double (containsNull = true)
|-- key: long (nullable = true)
+--------------------+---+
| val|key|
+--------------------+---+
|[1.466095512E9, 6...| 0|
|[1.466097304E9, 6...| 1|
|[1.466099099E9, 6...| 2|
|[1.466100895E9, 7...| 3|
|[1.466102698E9, 7...| 4|
我试过这个,但我在.toDF
行上收到了错误,没有任何解释。
FN2 = FN.map(lambda x, y: (x[0], x[1], y))
Square = FN2.toDF(['TS','val','key']) #Converts to dataframe
Square.show()
答案 0 :(得分:0)
您的lambda函数包含错误,请尝试
FN2 = FN.map(lambda (x, y): (x[0], x[1], y))
通常,每一行都作为单个参数传递给map,所以最安全的方法是使用像
之类的东西进行映射FN2 = FN.map(lambda row: (row[0], row[1]))
答案 1 :(得分:0)
我明白了。它是数组中的一个数组
FN2 = FN.map(lambda x: (x[0][0], x[0][1], x[1]))
Square = FN2.toDF(['TS','val','key'])
Square.show()