我有一个场景可以从现有的 RDD
然后把它传给其他人 Scala class
用于实际操作。让我们看看文本文件中的示例数据(empnum、empname、emposition、empsal)。
11,John,Paris,1000
12,Daniel,UK,3000
第一步,我创建一个 RDD
与 RDD[String]
按以下代码,
val empRDD = spark
.sparkContext
.textFile("empInfo.txt")
所以,我的要求是创建另一个 RDD
使用empnum,empname,emposition(再次使用 RDD[String]
). 为此,我尝试了下面的代码,因此我得到 RDD[String, String, String]
.
val empReqRDD = empRDD
.map(a=> a.split(","))
.map(x=> (x(0), x(1), x(2)))
我试过了 Slice
而且,它给了我 RDD[Array(String)]
. 我需要的rdd应该是 RDD[String]
传递到所需的scala类以执行某些操作。
预期输出应该是,
11,John,Paris
12,Daniel,UK
有人能帮我实现吗?
2条答案
按热度按时间bttbmeg01#
我想试试这个
x8diyxa72#
在最初的实现中,第二个Map将数组元素放入一个3元组中,因此rdd[(string,string,string)]。
实现目标的一种方法是更改第二个Map以构造如下所示的字符串:
或者,更简洁一点的方法是,获取数组的前3个元素并使用mkstring方法:
对于这个用例,可能有点过头了,但是您也可以使用regex来提取值: