【问题标题】:Dynamic partitioning with dervied column使用派生列进行动态分区
【发布时间】:2016-02-18 06:46:18
【问题描述】:

我正在尝试通过动态分区表将数据插入 Hive 表

创建外部表target_tbl_wth_partition( booking_id 字符串, code 字符串, txn_date 时间戳, logger 字符串, ) 按 (txn_date date,txn_hour int) 划分

价值观

txn_date=20160216 txn_hour=12

创建外部表stg_target_tbl_wth_partition( booking_id 字符串, code 字符串, txn_date 时间戳, logger 字符串, )

插入覆盖表target_tbl_wth_partition partition(txn_date,hour(txn_date)) 从stg_target_tbl_wth_partition中选择booking_id,code,txn_date,logger;

我无法在动态分区中插入派生列。任何有关如何处理此类案件的帮助都会有所帮助。

问候, 拉克什

【问题讨论】:

  • 我建议你阅读几篇关于 Hive 如何存储分区数据、外部和托管 Hive 表之间的区别、如何为分区表编写 INSERT 查询以及日期文字的预期格式的论文。但我猜你无论如何也不会那样做。

标签: hive hiveql


【解决方案1】:

我建议你从类似的东西开始......

CREATE TABLE blahblah (...)
PARTITIONED BY (aaa STRING, bbb STRING)
;
SET hive.exec.dynamic.partition = true
;
SET hive.exec.dynamic.partition.mode = nonstrict
;
INSERT INTO TABLE blahblah PARTITION (aaa, bbb)
SELECT ...,
  SUBSTRING(aaabbb,1,5) as aaa,
  SUBSTRING(aaabbb,7,2) as bbb
FROM sthg
;

...让它工作;那么你就可以开始尝试一些奇怪且不受支持的语法,看看哪些有效,哪些无效。

【讨论】:

  • 谢谢。我实际上是在阅读文档后做到的。并了解最后一列是分区值。
  • 那是开源的,文档不是重点。每个版本都有它的错误,回归......所以需要实验>从简单开始,然后详细说明。
猜你喜欢
  • 1970-01-01
  • 2014-04-28
  • 2021-07-02
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 2020-02-06
  • 2018-02-26
  • 2011-12-29
相关资源
最近更新 更多