如何检查spark中的列数据类型
How to check column data type in spark
我有一种插补方法可以进行均值、中值和众数运算,但如果列数据类型不在 Double/Float 中,这种方法就会失败。
我的 java 代码:
Imputer imputer = new Imputer().setInputCol("amount").setOutputCol("amount);
imputer.setStrategy("mean");
ImputerModel model = imputer.fit(dataset);
model.transform(dataset);
有什么办法可以解决这个问题
我正在使用 java
我可以推荐一种方法,但不确定它是否是最佳方法。
第 1 步:获取字段详细信息这将 return 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
我有一种插补方法可以进行均值、中值和众数运算,但如果列数据类型不在 Double/Float 中,这种方法就会失败。
我的 java 代码:
Imputer imputer = new Imputer().setInputCol("amount").setOutputCol("amount);
imputer.setStrategy("mean");
ImputerModel model = imputer.fit(dataset);
model.transform(dataset);
有什么办法可以解决这个问题
我正在使用 java
我可以推荐一种方法,但不确定它是否是最佳方法。
第 1 步:获取字段详细信息这将 return 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