【问题标题】:Hive: When insert into partitioned table, in most of the rows, hive double url-encode the partition key columnHive:插入分区表时,在大多数行中,hive double url-encode 分区键列
【发布时间】:2018-08-05 00:46:07
【问题描述】:

我创建了一个分区表:

create table  t1 ( amount double) partitioned by ( events_partition_key string) stored as paquet;

在 tmp_table 中添加了一些数据,其中列 'events_partition_key' 包含时间戳(字符串类型),格式如下:“2018-02-25 00:00:00”

然后我在分区表中插入一些数据。

insert into table t1 partition (events_partition_key)
select amount, events_partition_key
from tmp_table

当从新的分区表 t1 中选择时,在某些情况下,events_partition_key 列的显示方式与它在 tmp_table 中的显示方式相同,即“2018-02-25 00:00:00”,但在大多数情况下,它显示为 URL 编码,即“2018-02-25 00%3A00%3A00”

在任何情况下,原始列 partition_key 在是否进行 URL 编码的情况下都没有区别,

显示新表的分区时:

show partitions t1;

我对所有内容进行了两次 URL 编码(即“2018-02-25 00%253A00%253A00”),但在某些情况下只有一次(即“2018-02-25 00%3A00%3A00”)

原来的值没有错,只是变成了分区键。

【问题讨论】:

  • 我也试过用'textfile'而不是'parquet'并遇到同样的问题。用一个小数据集试了一下,它工作得很好,即使是以前有双重编码的分区键
  • 在 hive 版本上测试:hive-1.1.0-cdh5.9.1

标签: hadoop hive apache-spark-sql hadoop-partitioning


【解决方案1】:

此 Jira HIVE-3679hive.decode.partition.name 属性添加到版本 0.10.0 中的 HiveConf.java

尝试将其设置为 true。

set hive.decode.partition.name=true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 2018-01-03
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    相关资源
    最近更新 更多