0
使用java的火花,我創建的逗號分隔符源file.In的資源文件數據幀,如果最後一列,然後空值的投擲arrayindexoutofbound error.Below是樣本數據和code.is有什麼我可以處理這個錯誤的方式,因爲在最後一欄中有很多機會獲得空白值。在下面的示例數據第四行導致問題。星火SQL Dataframe- java.lang.ArrayIndexOutOfBoundsException錯誤
示例數據
1,VIV,CHN,34
2,人,GNT,56
3,ANU,雙關,22
** 4,拉吉,砰*
JavaRDD<String> dataQualityRDD = spark.sparkContext().textFile(inputFile, 1).toJavaRDD();
String schemaString = schemaColumns;
List<StructField> fields = new ArrayList<>();
for (String fieldName : schemaString.split(" ")) {
StructField field = DataTypes.createStructField(fieldName, DataTypes.StringType, true);
fields.add(field);
}
StructType schema = DataTypes.createStructType(fields);
JavaRDD<Row> rowRDD = dataQualityRDD.map((Function<String, Row>) record -> {
// String[] attributes = record.split(attributes[0], attributes[1].trim());
Object[] items = record.split(fileSplit);
// return RowFactory.create(attributes[0], attributes[1].trim());
return RowFactory.create(items);
});
}
}
REF:https://medium.com/@mrpowers/sparks-treatment -of-empty-strings-and-null-values-in-csv-files -80748893451f – skvyas
基於源文件,我將傳遞由另一個job.sql查詢動態生成的sql查詢,這將有助於我瞭解列信息並提供錯誤記錄。 – vivman
如果我誤解了你的問題,我很抱歉。但是,無論哪種情況,您都可以像上面那樣創建一個Dataset,然後將您的查詢傳遞給您已經擁有的參數,我認爲這個參數之一?通過將數據集註冊爲臨時表可以執行任何進一步的轉換/操作?所以,簡而言之,你必須保持源文件查詢+其他params地圖或其他東西? – skvyas