从PySpark中的字符串获取列表方法讲解

在 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|

到此这篇关于从pyspark中的字符串获取列表方法讲解的文章就介绍到这了,更多相关如何从 pyspark 中的字符串获取列表内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐