从sparkDataframe中的stringtype列中断开字典

xqk2d5yq  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(316)

我有一个spark表,我想在python中阅读(我在databricks中使用python3),实际上结构如下。日志数据存储在单个字符串列中,但它是一个字典。
我怎样把字典里的词条分出来读呢。

dfstates = spark.createDataFrame([[{"EVENT_ID":"123829:0","EVENT_TS":"2020-06-22T10:16:01.000+0000","RECORD_INDEX":0},
                                   {"EVENT_ID":"123829:1","EVENT_TS":"2020-06-22T10:16:01.000+0000","RECORD_INDEX":1},
                                   {"EVENT_ID":"123828:0","EVENT_TS":"2020-06-20T21:17:39.000+0000","RECORD_INDEX":0}],
                                   ['texas','24','01/04/2019'],
                                   ['colorado','13','01/07/2019'],
                                   ['maine','14','']]).toDF('LogData','State','Orders','OrdDate')

我要做的是将spark表读入一个dataframe,找到max event timestamp,找到具有该timestamp的行,然后计算这些行并将它们读入一个新dataframe,其中包含数据列和日志数据,为event id(不包含记录索引)、event date和record index添加列。
在下游,我将验证数据,从stringtype转换为适当的数据类型,并根据需要填写缺失或无效的值。一直以来,我都主张行计数=原始行计数。
不过,唯一让我困扰的是如何读取这个日志数据列,并将其更改为我可以处理的内容。像pandas.series()之类的东西?

cl25kdpy

cl25kdpy1#

可以使用将单个结构类型的列拆分为多个列 dfstates.select('Logdata.*) 请参考以下答案:如何在pyspark中将列表拆分为多列?一旦有了独立的列,就可以执行标准的pyspark操作,比如过滤

相关问题