将 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 的单独行。您可以简单地使用 flatMapstring 分隔为单独的 RDD rows,然后使用 zipWithIndex()lookUp()

print(rdd.flatMap(lambda x: x.split(",")).zipWithIndex().lookup("e"))

【讨论】:

以上是关于将 RDD 行拆分到 Pyspark 中的不同列的主要内容,如果未能解决你的问题,请参考以下文章

遍历 pyspark 数据框中的列,而不为单个列创建不同的数据框

使用拆分列将 RDD 写入 csv

在pySpark中将RDD拆分为n个部分

pyspark 行列表的 RDD 到 DataFrame

如何计算 pyspark RDD 中的列数?

pyspark 按列将数据帧拆分为几个数据帧