如何在 Hive 中为批处理数据创建分层分区

Posted

技术标签:

【中文标题】如何在 Hive 中为批处理数据创建分层分区【英文标题】:How to create hierarchical partitions for batch data in Hive 【发布时间】:2017-01-15 11:43:05 【问题描述】:

考虑 2000 年的数据。

test.csv

country_code,product_code,rpt_period 我们,crd,2000 我们,PCL,2000 我们,mtg,2000 在,crd,2000 在,PCL,2000 在,mtg,2000

现在我将新生成的 2001 记录附加到 test.csv。将新数据附加到 test.csv 后,我的数据如下所示。

append.csv

country_code,product_code,rpt_period 我们,crd,2000 我们,PCL,2000 我们,mtg,2000 在,crd,2000 在,PCL,2000 在,mtg,2000 我们,crd,2001 我们,PCL,2001 我们,mtg,2001 在,crd,2001 在, pcl, 2001 在,mtg,2001

蜂巢中可能出现以下情况?如果是,请回答问题。

    如何使用此数据为分区表Foo 创建架构?还有我 希望分区列为 country_codeproduct_code。 例如,我想(从 test.csv 文件记录)加载到表Foo?使用 hive LOAD DATA 命令? 如何将 append.csv(仅 2001 条记录)加载到表 Foo。这也需要使用 hive LOAD DATA 命令来完成

谢谢。

【问题讨论】:

【参考方案1】:

是的,您提到的所有场景都可以使用 Hive。

    创建临时表并加载您拥有的所有数据,然后您可以创建包含您提到的 2 列的分区表。

对于 2 和 3:只需加载命令即可。如果您打算加载到分区表中,则必须通过创建临时表并插入到分区表中。

让我知道这是您想要的,否则请更新您的问题。

【讨论】:

对于问题 2 和 3:我想使用 LOAD 命令将数据从各自的文件 test.csv 和 append.csv 加载到分区表中,而不是创建临时表并插入分区。可能吗? 不,使用 hive 查询(加载数据)...但是有一个调整,您可以直接将所需的数据放入分区文件夹,但请确保放置正确的数据(根据分区)。

以上是关于如何在 Hive 中为批处理数据创建分层分区的主要内容,如果未能解决你的问题,请参考以下文章

hive的严格模式和分区

在 Hive 中为年、月和日创建表分区

hive创建分区 9870查询不到

拆分 hive 分区以创建多个分区

如何从 hive 获取最新的分区数据

将为 hive 中的分区表创建多少个映射器和化简器