从键值的RDD创建数据帧,列表为valu

2024-06-01 01:19:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个rdd如下

rdd_1 = ['"columns":["date","appname","appenv","appstate"]']

我想把它转换成如下的数据帧

+---------+
| columns |
+---------+
|date     |
|appname  |
|appenv   |
|appstate |
+---------+

我尝试的是: 我很累地创建了一个模式,如下所示,并使用它来创建数据帧,但这不起作用

rdd_1_schema = StructType(
    [
        StructField('columns',ArrayType(StringType()))
    ])

架构的错误输出如下

rdd1.toDF(schema=rdd_1_schema).show()

错误:

TypeError: StructType can not accept object '"columns": in type <type 'str'>

第二次尝试:我尝试使用平面图

rdd1.flatMap(lambda x: map(lambda e: (x[0], e), x[1])).toDF().show()

但它将每个字符串作为列表的元素,例如下面的输出

+---+---+
| _1| _2|
+---+---+
| ''|  c|
+---+---+

Tags: columns数据lambdadateschematypeshow错误