【发布时间】:2016-04-11 23:20:27
【问题描述】:
我是 spark 和 scala 的新手,刚刚开始学习……我在 CDH 5.1.3 上使用 spark 1.0.0
我得到了一个名为 dbTableKeyValueMap: RDD[(String, String)] 的广播 rdd,我想使用 dbTableKeyValueMap 来处理我的 fileRDD(每行有 300 多列)。这是代码:
val get = fileRDD.map({x =>
val tmp = dbTableKeyValueMap.lookup(x)
tmp
})
在本地运行此程序会挂起和/或一段时间后出现错误:
scala.MatchError: null
at org.apache.spark.rdd.PairRDDFunctions.lookup(PairRDDFunctions.scala:571)
我可以理解访问另一个 RDD 中的一个 RDD 会有问题,如果集合的位置和大小出现。对我来说,采用笛卡尔积不是选项,因为文件 RDD 中的记录很大(每行有 300 多列)。 ..就像我在设置方法中使用分布式缓存加载这个dbTableKeyValueMap并在hadoop java mapreduce代码的MAP中使用一样,我想在spark map中使用类似的方式......我找不到简单的例子来引用类似的用例。 .. 我想逐一迭代 fileRDD 行并在“每一列”上进行一些转换、美化、查找等以进行进一步处理...... 或者还有其他方法可以使用 dbTableKeyValueMap 作为 scala 集合而不是 spark RDD
请帮忙
【问题讨论】:
标签: scala apache-spark spark-streaming rdd broadcasting