使用spark Java的序列文件读取问题

时间:2017-05-03 19:24:19

标签: hadoop apache-spark sequencefile bigdata

我正在尝试使用spark读取hive生成的序列文件。当我尝试访问该文件时,我面临org.apache.spark.SparkException:由于阶段失败而中止作业:任务不可序列化:java.io.NotSerializableException:

我已经尝试过解决这个问题的方法,比如让类可序列化,但我还是遇到了问题。我在这里写代码片段,请让我知道我在这里缺少的东西。

是否是因为BytesWritable数据类型或导致问题的其他原因。

JavaPairRDD<BytesWritable, Text> fileRDD = javaCtx.sequenceFile("hdfs://path_to_the_file", BytesWritable.class, Text.class);
List<String> result = fileRDD.map(new Function<Tuple2<BytesWritables,Text>,String>(){
public String call (Tuple2<BytesWritable,Text> row){
return row._2.toString()+"\n";

}).collect();
}

1 个答案:

答案 0 :(得分:0)

以下是使其运作所需的内容

因为我们使用HBase来存储我们的数据,并且这个reducer将其结果输出到HBase表,Hadoop告诉我们他不知道如何序列化我们的数据。这就是为什么我们需要帮助它。在setUp里面设置io.serializations变量 你可以相应地在火花中做到这一点

conf.setStrings("io.serializations", new String[]{hbaseConf.get("io.serializations"), MutationSerialization.class.getName(), ResultSerialization.class.getName()});