从PySpark中的字符串获取列表方法讲解
在本篇内容里小编给大家分享的是一篇关于从PySpark中的字符串获取列表方法讲解及相关实例,有需要的朋友们跟着学习下。
在 PySpark 中是否有类似eval的功能。
我正在尝试将 Python 代码转换为 PySpark
我正在查询一个数据框,并且其中一列具有数据,如下所示,但采用字符串格式。
1 | [{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()函数(如果已使用):我得到以下输出:
1 2 3 4 5 | 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 中做到这一点?
实例扩展:
1 | df.schema: StructType( List (StructField( id ,StringType,true),StructField(recs,StringType,true))) |
1 2 3 4 5 | | 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中的字符串获取列表方法讲解的文章就介绍到这了
原文链接:https://www.javaroad.cn/questions/364406