我正在尝试使用Spark 2.0 / SparkSession读取文本文件(.gz)。
字段分隔符是';'。前几个字段正在正确加载,但数据不存在的最后几个字段不会被spark读取。
例如,直到...... h; 7正在被spark读取,但之后不会......如果它们在h; 7之前,则处理空文件;。
我能知道为什么火花忽略了最后的字段???
File Format:
1;2;6;;;;;h;7;;;;;;;;;
代码:
JavaRDD<mySchema> peopleRDD = spark.read()
.textFile("file:///app/home/emm/zipfiles/myzips/")
.javaRDD()
.map(new Function<String, mySchema>()
{
@Override
public mySchema call(String line) throws Exception
{
String[] parts = line.split(";");
mySchema mySchema = new mySchema();
mySchema.setCFIELD1 (parts[0]);
mySchema.setCFIELD2 (parts[1]);
mySchema.setCFIELD3 (parts[2]);
mySchema.setCFIELD4 (parts[3]);
mySchema.setCFIELD5 (parts[4]);
................................
................................
return mySchema;
}
});
答案 0 :(得分:1)
问题在于我的Java代码:
分裂方法-1的第二个参数将处理此问题。
String[] parts = line.split(";",-1);