将 RDD 行拆分到 Pyspark 中的不同列
Posted
技术标签:
【中文标题】将 RDD 行拆分到 Pyspark 中的不同列【英文标题】:Splitting and RDD row to different column in Pyspark 【发布时间】:2018-01-29 01:59:50 【问题描述】:这是我上一个问题的延续。
我正在尝试使用 pyspark 查找以下 RDD 的“e”的索引:
['a,b,c,d,e,f']
我正在使用的方法:
rdd.zipWithIndex().lookup('e')
但我得到 = []
因为 Rdd 的形式是: [ ['a,b,c,d,e,f']
我试过了
rdd.flatMap(lambda x: x)
所以我使用查找来获取索引,但我仍然得到 []
请帮助我。我如何获得 Rdd 为:
['a','b','c','d','e','f']
这样我就可以做这个方法了
rdd.zipWithIndex().lookup('e')
【问题讨论】:
***.com/questions/36438321/… 我试过这个方法。但是为了获得索引,我需要它的形式: ['a','b','c','d','e','f'] 。我该怎么做 【参考方案1】:问题是您将整个字符串用作array
['a,b,c,d,e,f']
所以,这里a,b,c,d,e,f
都被视为一个字符串。 您需要将它们分成您拥有的 RDD 的单独行。您可以简单地使用 flatMap
将 string 分隔为单独的 RDD rows,然后使用 zipWithIndex()
和 lookUp()
print(rdd.flatMap(lambda x: x.split(",")).zipWithIndex().lookup("e"))
【讨论】:
以上是关于将 RDD 行拆分到 Pyspark 中的不同列的主要内容,如果未能解决你的问题,请参考以下文章