0
클래스는 다음과 같습니다. 나는 또한 "null이다"라는 결과를 얻는다. testClass에서 일시적인 태그를 제거하면 TestClass가 Serializable을 구현한다고 생각하더라도 직렬화 할 수없는 작업 오류가 발생합니다. 그렇다면 mergeLog에있는 object testClass가 null 인 이유는 무엇입니까?Spark의 클래스 nullPoint 예외
public class MergeLog implements Serializable {
private static final Logger LOGGER = LoggerFactory.getLogger(LogFormat.class);
private transient SparkConf conf = new SparkConf().setAppName("log join");
private transient JavaSparkContext sc = new JavaSparkContext(conf);
private HiveContext hiveContext = new org.apache.spark.sql.hive.HiveContext(sc.sc());
private transient TestClass testClass = new TestClass();
public void process() {
JavaRDD<String> people = sc.textFile("/user/people.txt");
String schemaString = "name age";
List<StructField> fields = new ArrayList<StructField>();
for (String fieldName: schemaString.split(" ")) {
fields.add(DataTypes.createStructField(fieldName, DataTypes.StringType, true));
}
StructType schema = DataTypes.createStructType(fields);
JavaRDD<Row> rowRDD = people.map(
new Function<String, Row>() {
@Override
public Row call(String record) throws Exception {
String[] fields = record.split(",");
return RowFactory.create(fields[0], fields[1].trim());
}
});
DataFrame peopleDataFrame = sqlContext.createDataFrame(rowRDD, schema);
JavaRDD<String> javaRDD = peopleDataFrame.toJavaRDD().map(
new Function<Row, String>() {
@Override
public String call(Row row) throws Exception {
String ins = null;
if (testClass == null) {
return "is null";
} else {
ins = testClass.calc(row);
}
}
});
}
public static void main(String[] args) {
MergeLog mergeLog = new MergeLog();
mergeLog.process();
}
}
class TestClass implements Serializable {
public String calc(Row row) {
return row.mkString();
}
}