如何解决镶木地板表中的TIMESTAMP列CDH5与CDH6
我们最近将服务器从CDH 5升级到CDH 6。在镶木表中使用SPARK将数据插入TIMESTAMP列时,数据的插入方式有所不同。
CDH 5:
蜂巢:
如果我们将2019-01-30
插入到实木复合地板表的TIMESTAMP列中,然后从Hive中选择数据,则值为'2019-01-30 00:00:00 0'
CDH 6:
蜂巢:
如果我们将2019-01-30
插入到实木复合地板表的TIMESTAMP列中,然后从HIVE中选择数据,则值为'2019-01-30 04:00:00'
IMPALA:
如果我们将2019-01-30
插入实木复合地板表的TIMESTAMP列中,然后从IMPALA中选择数据,则值为'2019-01-30 04:00:00'
请让我知道是否可以使用任何火花特性。我的主要目标是匹配CDH5与CDH6中的HIVE值,如果可能,当我们从IMPALA中选择时,如果应该设为2019-01-30 00:00:00'
解决方法
跳过 Spark 和 Hive 之间的数据类型问题, Spark 用于写入 Parquet 数据的约定是可配置的。
这由属性spark.sql.parquet.writeLegacyFormat
确定。默认值为false
。如果设置为true
,则 Spark 将使用与 Hive 相同的约定来写入Parquet数据。
val spark = SparkSession
.builder()
.appName("MyApp")
.master("local[*]")
.config("spark.sql.shuffle.partitions","200") //Change to a more reasonable default number of partitions for our data
.config("spark.sql.parquet.writeLegacyFormat",true)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。