如何使用pyspark将列中的特定行转换为单独的列,并使用递增的数字索引枚举每一行?

时间:2018-04-12 09:17:49

标签: apache-spark pyspark spark-dataframe rdd

我正在努力想出一个合理的解决方案,将我的数据格式化为适当的结构以输入到pyspark数据帧。我是pyspark的新手,所以也许我错过了一些比较直接的东西。我有一个大文本文件~500MB,格式如下

1:
1488844,3,2005-09-06
822109,5,2005-05-13
885013,4,2005-10-19
30878,4,2005-12-26
823519,3,2004-05-03
2:
1076258,3,2004-06-28
1663216,2,2004-12-28
549526,3,2005-05-11
1850680,1,2005-09-17
3:
1307418,4,2005-10-15
253326,5,2005-04-15
486798,5,2005-05-27

我想将其输入到pyspark数据帧中。我开始将它输入RDD,如下所示:

dirPath = 'hdfs://data/movie-data/file.txt'

movieratings_RDD = sc.textFile(dirPath)

我想知道是否有更简洁的方法来提取冒号数字并将它们放入一个单独的列中,如下所示:

1,1488844,3,2005-09-06
1,822109,5,2005-05-13
1,885013,4,2005-10-19
1,30878,4,2005-12-26
1,823519,3,2004-05-03
2,1076258,3,2004-06-28
2,1663216,2,2004-12-28
2,549526,3,2005-05-11
2,1850680,1,2005-09-17
etc.

我知道我可以遍历每一行并重新生成列,但我认为有一种更有效的方法来执行此任务。我查看了函数explode,但是当您想要将列中的一组分组值分解为将分组值分配给它们自己的行的列时,该函数适用于这种情况。

0 个答案:

没有答案