apache-spark - TIMESTAMP 列问题 CDH5 与镶木地板表中的 CDH6
问题描述
我们最近将服务器从 CDH 5 升级到了 CDH 6 。在 parquet 表中使用 SPARK 将数据插入 TIMESTAMP 列时,插入数据的方式有所不同。
光盘 5:
HIVE:
如果我们插入2019-01-30
到 parquet 表的 TIMESTAMP 列并从 Hive 值中选择数据是'2019-01-30 00:00:00 0'
光盘 6:
HIVE:
如果我们插入2019-01-30
parquet 表的 TIMESTAMP 列并从 HIVE 值中选择数据是'2019-01-30 04:00:00'
IMPALA:
如果我们插入2019-01-30
parquet 表的 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)
推荐阅读
- reactjs - react-i18next / i18n 遵循什么语言代码的 ISO 标准?
- flutter - 将 GridView 添加到列表视图的末尾
- tensorflow - Keras 在 LSTM 中降低维度,不知道为什么
- python - 从 tensorflow 中保存在 csv 文件中的最大 epoch 恢复训练
- vue.js - 在NUXT的布局中选择UI模块
- python - 如何从使用 msgpack 编码的 redis 访问数据?
- width - visual studio 2019项目属性设置datagridview列大小
- html - 将一行设置为黑色 - 该行有更多的网络链接
- node.js - 为什么我的 cookie 在页面刷新时被删除?express-session、redis 和 react
- algorithm - 查找包含数字的范围的算法