如何将Spark JavaPairRDD数据收集为列表

时间:2017-11-28 00:07:20

标签: apache-spark java-pair-rdd

我正在使用Java中的Apache Spark 2.2.0任务,我目前在mapToPair()上执行JavaRDD<String>函数,得到JavaPairRDD<Integer, Table>的结果。将Table视为任何对象类型。

我现在要做的是将所有数据收集到最终列表中,该列表将返回给驱动程序。我不想对数据执行任何转换,汇总或计算,这就是我考虑使用collect()函数的原因。

到目前为止我的内容如下:

JavaPairRDD<Integer, Table> pairs = gData.mapToPair(...);
JavaRDD<Tuple2<Integer, Table>> t = JavaRDD.fromRDD(pairs.rdd(), null);
List<Tuple2<Integer, Table>> el = t.collect();

但由于某种原因,我无法理解它会产生以下错误...

Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.mapred.FileInputFormat
at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:312)

我可能完全走错了方向,但是你能建议一种方法来收集这些Tuple2数据并可能迭代它们吗?

谢谢。

更新无论我的代码是什么,即使我尝试运行简单的单词计数示例,那么Format.getSplits(FileInputFormat.java:312)的错误仍会出现!有什么帮助吗?

0 个答案:

没有答案