我加载一个csv文件 Apache Spark
.
Dataset<Row> csv = session.read().schema(schema()).format("csv")
.option("header","true").option("delimiter", ";").load("myFile.csv").selectExpr("*");
为此,我提供了一个模式:
public StructType schema(boolean renamed) {
StructType schema = new StructType();
schema = schema.add("CODGEO", StringType, false)
.add("P16_POP1564", DoubleType, false)
.add("P16_POP1524", DoubleType, false)
.add("P16_POP2554", DoubleType, false)
.add("P16_POP5564", DoubleType, false)
.add("P16_H1564", DoubleType, false)
....
return schema;
}
数据集已加载。一 printSchema()
在控制台上显示:
root
|-- CODGEO: string (nullable = true)
|-- P16_POP1564: double (nullable = true)
|-- P16_POP1524: double (nullable = true)
|-- P16_POP2554: double (nullable = true)
|-- P16_POP5564: double (nullable = true)
|-- P16_H1564: double (nullable = true)
...
但每个字段都标记为nullable=true。
我明确要求它们中的每一个都不能为null。
有什么问题吗?
1条答案
按热度按时间8wigbo561#
对我来说,效果不错-
默认情况下,读取csv时,空字符串(“”)被视为null
测试-1。具有null的数据集schema nullable=false
输出-
结论-预期行为通过
2. 具有null的数据集schema nullable=true
输出-
结论-预期行为通过
3. 不带null的数据集schema nullable=true
输出-
结论-预期行为通过