Apache spark 将Python字典转换为Spark数据帧
我有一本Python字典:Apache spark 将Python字典转换为Spark数据帧,apache-spark,dictionary,dataframe,pyspark,apache-spark-sql,Apache Spark,Dictionary,Dataframe,Pyspark,Apache Spark Sql,我有一本Python字典: dic = { (u'aaa',u'bbb',u'ccc'):((0.3, 1.2, 1.3, 1.5), 1.4, 1), (u'kkk',u'ggg',u'ccc',u'sss'):((0.6, 1.2, 1.7, 1.5), 1.4, 2) } 我想将此字典转换为带列的Spark DataFrame: [“键”、“值1”、“值2”、“值3”、“值4”、“值5”、“值6”] 示例行(1): 键| val|u 1 | va
dic = {
(u'aaa',u'bbb',u'ccc'):((0.3, 1.2, 1.3, 1.5), 1.4, 1),
(u'kkk',u'ggg',u'ccc',u'sss'):((0.6, 1.2, 1.7, 1.5), 1.4, 2)
}
我想将此字典转换为带列的Spark DataFrame:
[“键”、“值1”、“值2”、“值3”、“值4”、“值5”、“值6”]
示例行(1):
键| val|u 1 | val|u 2 | val|u 3 | val|u 4 | val|u 5 | val|u 6
u'aaa',u'bbb',u'ccc'| 0.3 | 1.2 | 1.3 | 1.5 | 1.4 |
提前感谢您提取项目,将键转换到
列表
,并将所有内容组合成一个元组
:
df = sc.parallelize([
(list(k), ) +
v[0] +
v[1:]
for k, v in dic.items()
]).toDF(['key', 'val_1', 'val_2', 'val_3', 'val_4', 'val_5', 'val_6'])
df.show()
## +--------------------+-----+-----+-----+-----+-----+-----+
## | key|val_1|val_2|val_3|val_4|val_5|val_6|
## +--------------------+-----+-----+-----+-----+-----+-----+
## | [aaa, bbb, ccc]| 0.3| 1.2| 1.3| 1.5| 1.4| 1|
## |[kkk, ggg, ccc, sss]| 0.6| 1.2| 1.7| 1.5| 1.4| 2|
## +--------------------+-----+-----+-----+-----+-----+-----+
它起作用了。谢谢关于语法的简短问题,为什么在表达式
(列表(k),)
中需要逗号和括号?我们想要连接三个元组<代码>(x,)标记单个元素元组。