我有一種插補方法來進行均值、中值和眾數運算,但如果列資料型別不是 Double/Float,這將失敗。
我的java代碼:
Imputer imputer = new Imputer().setInputCol("amount").setOutputCol("amount);
imputer.setStrategy("mean");
ImputerModel model = imputer.fit(dataset);
model.transform(dataset);
有什么辦法可以處理這個
我正在使用java
uj5u.com熱心網友回復:
我可以建議一種方法,但不確定它是否是最佳方法。
第 1 步:獲取欄位詳細資訊,這將回傳 StructField[]
第 2 步:遍歷接收到的陣列并檢查列的資料型別
private boolean isValidColumnTypes(String[] columnArray, Dataset<?> dataset) {
StructField[] fieldArray = dataset.schema().fields();
for (int i = 0; i < columnArray.length; i ) {
for (StructField data : fieldArray) {
boolean doubleType=data.dataType().toString().equals("DoubleType");
boolean floatType=data.dataType().toString().equals("FloatType");
if (columnArray[i].equals(data.name()) && !(doubleType ||floatType)){
return false;
}
}
}
return true;
}
在上述方法中,我將列名作為字串陣列String[] columnArray
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/474826.html
標籤:爪哇 阿帕奇火花 apache-spark-sql apache-spark-数据集
上一篇:更改火花資料框列名稱
