4

我正在使用 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)仍然会出现错误!有什么帮助吗?

4

0 回答 0