Apache spark 将Python字典转换为Spark数据帧

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

我有一本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 | 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,)标记单个元素元组。