如何将无可空数据帧保存到配置单元表?

时间:2017-11-15 13:45:44

标签: apache-spark hive

我在spark中有一个数据框,其中包含一个不可为空的列。当我将它保存到HIVE然后从HIVE读取它时,非可空列可以为空。什么可能是错的?

对于某些上下文,我正在使用现有数据框并更改其架构以包含无可空属性。

df = spark.table("myhive_table")
df.printSchema()
=> root
   |-- col1: string (nullable = true)
   |-- col2: string (nullable = true)

schema = StructType([StructField("col1",spark_types.StringType(), True),
                    StructField("col2",spark_types.DoubleType(), False),
                    ])

df2 = spark.createDataFrame(df.rdd,schema)
df2.printSchema()
=> root
   |-- col1: string (nullable = true)
   |-- col2: string (nullable = false)

spark.sql('drop table myhive_table')
df.write.saveAsTable("myhive_table",overwrite = True)

spark.table("myhive_table").printSchema()
=> root
   |-- col1: string (nullable = true)
   |-- col2: string (nullable = true)

0 个答案:

没有答案