我在 spark shell 上尝试了一个 Spark scala 示例,如下所示;
val myManualSchema = StructType(Array(StructField("DEST_COUNTRY_NAME", StringType, true),
StructField("ORIGIN_COUNTRY_NAME",StringType
, true), StructField("count", LongType, nullable=false)))
val dfNew = spark.read.format("json").schema(myManualSchema).load("/test.json")
dfNew.printSchema()
我得到的输出如下;
root
|-- DEST_COUNTRY_NAME: string (nullable = true)
|-- ORIGIN_COUNTRY_NAME: string (nullable = true)
|-- count: long (nullable = true)
我期待该count专栏,nullable=false但它似乎没有被强制执行。但是,当我从这个创建一个新的 DataFrame 并在那里设置架构时,它就可以工作了。这就是我所做的;
val dfSchemaTest = spark.createDataFrame(dfNew.rdd,myManualSchema)
scala> dfSchemaTest.printSchema()
root
|-- DEST_COUNTRY_NAME: string (nullable = true)
|-- ORIGIN_COUNTRY_NAME: string (nullable = true)
|-- count: long (nullable = false)
如果有人能在下面指出我在加载数据文件时未强制执行架构的错误,我将不胜感激。
ITMISS
相关分类