我有一个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()之类的东西?
1条答案
按热度按时间cl25kdpy1#
可以使用将单个结构类型的列拆分为多个列
dfstates.select('Logdata.*)
请参考以下答案:如何在pyspark中将列表拆分为多列?一旦有了独立的列,就可以执行标准的pyspark操作,比如过滤