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