我试图找到是否有办法使用java获取Apache spark数据集中包含的列的数据类型? 我有一个数据集,其中包含一个名为SSN的列,我编写了这段代码来修剪该列中的数据:
Dataset<Row> trimmedOutput = trimInput.select(trim(trimInput.col("SSN")).as("SSN")
我正在尝试获取SSN列的数据类型,以根据预期类型对其进行验证。 有人可以帮助我吗?
由于
答案 0 :(得分:0)
我来这里寻找相同的答案:)现在看一下API,这是我能想到的一种方法:
public static String dataTypeString(Dataset<Row> dataset, String colName) {
StructField[] fields = dataset.schema().fields();
String dataType = null;
for(StructField field: fields) {
if(field.name().equals(colName)) {
dataType = field.dataType().typeName();
break;
}
}
return dataType;
}
要了解trimmedOutput数据集中的SSN列的数据类型,请按以下方式使用它:
dataTypeString(trimmedOutput, "SSN")
还有一个类似的方法simpleString()可以代替typeName()调用,API文档提到了两者之间的区别。
如果您打算检查数据集中的某列是否具有某种数据类型,如果不是,则失败,以下代码将有所帮助:
SchemaUtils.checkColumnType(holdoutResults.schema(),
"SSN",
DataTypes.StrringType,
"Datatype Mismatch for column SSN");
上面的调用将检查'SSN'列是否为String类型,如果不是,则失败,它将显示您作为最后一个参数传递的消息-“ SSN列的数据类型不匹配”。此方法仅在ml库中的SchemUtils类上可用。