【发布时间】:2020-01-13 10:49:22
【问题描述】:
我正在尝试使用 Scala 和 Spark 从 csv 读取数据,但是 列的值为空。
我尝试从 csv 读取数据。我还提供了一个架构 方便查询数据。
private val myData= sparkSession.read.schema(createDataSchema).csv("data/myData.csv")
def createDataSchema = {
val schema = StructType(
Array(
StructField("data_index",StringType, nullable = false),
StructField("property_a",IntegerType, nullable = false),
StructField("property_b",IntegerType, nullable = false),
//some other columns
)
)
schema
查询数据:
val myProperty= accidentData.select($"property_b")
myProperty.collect()
我希望数据作为某些值的列表返回
但它们作为包含空值的列表返回(值为空)。 为什么?
当我打印架构时,可为空设置为 true 而不是 false。
我正在使用 Scala 2.12.9 和 Spark 2.4.3。
【问题讨论】:
-
csv 包含什么?
-
您的数据框是
myData,正在查询accidentData。 -
它应该是 myData 因为我想匿名化变量名。所以应该是
val my property = myData.select($"property_b")。原始 csv 包含来自kaggle 的英国事故数据 -
您可以添加您的 csv 的屏幕截图吗?
-
csv 文件很大,大约有 33 列和超过 500,000 行。
标签: scala csv apache-spark