为了账号安全,请及时绑定邮箱和手机立即绑定

Spark scala模式未在加载时强制执行

Spark scala模式未在加载时强制执行

qq_花开花谢_0 2022-05-25 16:57:25
我在 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)如果有人能在下面指出我在加载数据文件时未强制执行架构的错误,我将不胜感激。
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

没有什么可以做的,因为可空性是由文件格式强制执行的。这正是 spark 所做的 - 如果数据源无法确保该列不为空,则DataFrame在读取时也不能。



查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信