從PySpark中的字符串獲取列表方法講解
在 PySpark 中是否有類似eval的功能。
我正在嘗試將 Python 代碼轉換為 PySpark
我正在查詢一個數據框,並且其中一列具有數據,如下所示,但采用字符串格式。
[{u'date': u'2015-02-08', u'by': u'[email protected]', u'value': u'NA'}, {u'date': u'2016-02-08', u'by': u'[email protected]', u'value': u'applicable'}, {u'date': u'2017-02-08', u'by': u'[email protected]', u'value': u'ufc'}]
假設“ x”是在數據框中保存此值的列。
現在,我想傳遞該字符串列“ x”並獲取列表,以便可以將其傳遞給 mapPartition 函數。
我想避免迭代驅動程序上的每一行,這就是我這樣想的原因。
在 Python 中使用 eval()函數(如果已使用):我得到以下輸出:
x = "[{u'date': u'2015-02-08', u'by': u'[email protected]', u'value': u'NA'}, {u'date': u'2016-02-08', u'by': u'[email protected]', u'value': u'applicable'}, {u'date': u'2017-02-08', u'by': u'[email protected]', u'value': u'ufc'}]" list = eval(x) for i in list: print i
輸出:(這也是我在 PySpark 中想要的)
{u’date’: u’2015-02-08′, u’by’: u’[email protected]’, u’value’: u’NA’}
{u’date’: u’2016-02-08′, u’by’: u’[email protected]’, u’value’: u’applicable’}
{u’date’: u’2017-02-08′, u’by’: u’[email protected]’, 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 中的字符串獲取列表內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- spark dataframe全局排序id與分組後保留最大值行
- pyspark創建DataFrame的幾種方法
- SparkSQL使用IDEA快速入門DataFrame與DataSet的完美教程
- Spark SQL 2.4.8 操作 Dataframe的兩種方式
- Python安裝spark的詳細過程