scala - 拆分rdd并访问元素的子组
问题描述
我想拆分关于逗号的 RDD 并访问一组预定义的元素。
例如,我有一个这样的 RDD:
a, b, c, d
e, f, g, h
我需要拆分然后访问第一行的第一个和第四个元素以及第二行的第二个和第三个元素以获得这个结果 RDD:
a, d
f, g
我不能在我的代码上硬写“1”和“4”,这就是为什么这样的解决方案不起作用:
rdd.map{line => val words = line.split(",") (words(0),words(3)) }
假设我有第二个 RRD,其行数相同,其中包含我想为每一行获取的元素
1,4
2,3
有没有办法得到我的元素?
解决方案
假设我有第二个 RRD,其行数相同,其中包含我想为每一行获取的元素
1,4
2,3
有没有办法得到我的元素?
如果您有第二个 RDD,其中已经有每行所需的组数,您可以压缩它们。来自 Spark 文档:
<U> RDD<scala.Tuple2<T,U>> zip(RDD<U> other, scala.reflect.ClassTag<U> evidence$13)
用另一个 RDD 压缩这个 RDD,返回每个 RDD 中的第一个元素、每个 RDD 中的第二个元素等的键值对。
因此,在您的示例中,将位于带有和a, b, c, d
的键值对中。因此,您可以执行以下操作:1,4
e, f, g, h
2,3
val groupNumbers = lettersRDD zip numbersRDD
groupnumbers.map{tuple ->
val numbers: Seq[Int] = // get the numbers from tuple._2
val words = tuple._1.split(",") (words(numbers.head),words(numbers(1) ) }
}
推荐阅读
- json - 由于 http://localhost:3000/[object%20object],无法在 React 的新选项卡中打开本地 json 文件
- javascript - 在 Angular 的 localStorage.getItem 上未定义
- linux - 在 jenkins 管道中的 NonCPS 方法中创建一个新文件
- java - 前一个发布者失败或损坏时如何切换到新发布者?
- java - WebSocket RemoteEndpoint 不可用问题将数据发送回客户端
- reactjs - 材质 UI 范围最小值最大值错误:无法读取 null 的属性“焦点”
- python - 在 shell /bin/bash 中运行 Python 3 脚本时 Automator 中的 importError
- .htaccess - html 扩展的 htaccess url 重写规则
- php - WP Rest API 在未登录时返回所有结果
- r - 从R中特殊字符之间的字符串中删除子字符串