如何从 PySpark 中的字符串获取列表

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

如何从 PySpark 中的字符串获取列表

java学习之路   2022-05-23 我要评论

在 PySpark 中是否有类似eval的功能。

我正在尝试将 Python 代码转换为 PySpark

我正在查询一个数据框,并且其中一列具有数据,如下所示,但采用字符串格式。

[{u'date': u'2015-02-08', u'by': u'abc@gg.com', u'value': u'NA'}, {u'date': u'2016-02-08', u'by': u'dfg@yaa.com', u'value': u'applicable'}, {u'date': u'2017-02-08', u'by': u'wrwe@hot.com', u'value': u'ufc'}]

假设“ x”是在数据框中保存此值的列。

现在,我想传递该字符串列“ x”并获取列表,以便可以将其传递给 mapPartition 函数。

我想避免迭代驱动程序上的每一行,这就是我这样想的原因。

在 Python 中使用 eval()函数(如果已使用):我得到以下输出:

x = "[{u'date': u'2015-02-08', u'by': u'abc@gg.com', u'value': u'NA'}, {u'date': u'2016-02-08', u'by': u'dfg@yaa.com', u'value': u'applicable'}, {u'date': u'2017-02-08', u'by': u'wrwe@hot.com', u'value': u'ufc'}]"

list = eval(x)

for i in list:  print i

输出:(这也是我在 PySpark 中想要的)

{u'date': u'2015-02-08', u'by': u'abc@gg.com', u'value': u'NA'}
{u'date': u'2016-02-08', u'by': u'dfg@yaa.com', u'value': u'applicable'}
{u'date': u'2017-02-08', u'by': u'wrwe@hot.com', u'value': u'ufc'}

如何在 PySpark 中做到这一点?

实例扩展:

df.schema: StructType(List(StructField(id,StringType,true),StructField(recs,StringType,true)))
|id     | recs |

|ABC|[66, [["AB", 10]]]
|XYZ|[66, [["XY", 10], ["YZ", 20]]]
|DEF|[66, [["DE", 10], ["EF", 20], ["FG", 30]]]  

我正试着把这些单子弄平

|id | like_id
|ABC|AB|
|XYZ|XY|
|XYZ|YZ|
|DEF|DE|
|DEF|EF|
|DEF|FG|

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们