我在 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但它似乎沒有被強制執(zhí)行。但是,當(dāng)我從這個創(chuàng)建一個新的 DataFrame 并在那里設(shè)置架構(gòu)時,它就可以工作了。這就是我所做的;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)如果有人能在下面指出我在加載數(shù)據(jù)文件時未強制執(zhí)行架構(gòu)的錯誤,我將不勝感激。
1 回答

ITMISS
TA貢獻1871條經(jīng)驗 獲得超8個贊
沒有什么可以做的,因為可空性是由文件格式強制執(zhí)行的。這正是 spark 所做的 - 如果數(shù)據(jù)源無法確保該列不為空,則DataFrame
在讀取時也不能。
添加回答
舉報
0/150
提交
取消