Spark忽略具有空值

时间:2017-03-22 21:33:30

标签: apache-spark apache-spark-sql spark-dataframe

我正在尝试使用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;

                  }
        });

1 个答案:

答案 0 :(得分:1)

问题在于我的Java代码:

分裂方法-1的第二个参数将处理此问题。

                String[] parts = line.split(";",-1);