【发布时间】:2019-04-07 12:25:55
【问题描述】:
我想将线性列表转换为数据框。 即给定以下列表,
a = ["a1", "a2", "a3", b1", "b2", "b3", "c1", "c2", "c3"]
预期结果是,
+--------------------+
| col1 | col2 | col3 |
+--------------------+
| a1 | a2 | a3 |
| b1 | b2 | b3 |
| c1 | c2 | c3 |
+--------------------+
我尝试了以下方法,但出现错误。
from pyspark.sql.types import *
a = ["a1", "a2", "a3", "b1", "b2", "b3", "c1", "c2", "c3"]
rdd = sc.parallelize(a)
schema = StructType([
StructField("a", StringType(), True),
StructField("b", StringType(), True),
StructField("c", StringType(), True)
])
df = sqlContext.createDataFrame(rdd, schema)
df.show()
最后一个 show() 语句收到错误“作业因阶段失败而中止”。 请有人告诉我解决方案? 谢谢。
【问题讨论】:
-
您需要将
a转换为:[('a1', 'a2', 'a3'), ('b1', 'b2', 'b3'), ('c1', 'c2', 'c3')] -
列表已给出,无法重写。在 NumPy 中寻找类似于“重塑”的东西。
标签: apache-spark dataframe pyspark rdd