提问者:小点点

TIMESTAMP列问题拼花表中的CDH5与CDH6


我们最近将我们的服务器从CDH5升级到CDH6。当在拼花表中使用SPARK将数据插入TIMESTAMP列时,插入数据的方式会有所不同。

CDH5:

HIVE:
如果我们将2019-01-30插入拼花表的TIMESTAMP列并从Hive值中选择数据为'2019-01-30 00:00:00 0'

CDH6:

HIVE:
如果我们将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'


共1个答案

匿名用户

为了跳过Spark和Hive之间的数据类型问题,Spark用于写入Parquet数据的约定是可配置的。

这是由属性lark. sql.parque.write eLegacyFormat决定的。默认值为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)