问题标签 [hive-partitions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2262 浏览

hive - 仅当 HIVE 中不存在分区时,如何插入覆盖分区?

仅当 HIVE 中不存在分区时,如何插入覆盖分区?

就像标题一样。我正在做一些总是需要重写配置单元表的东西。我有具有多个分区的表,当我在更改后重新运行代码时,我只想插入新分区而不更改现有分区。

0 投票
1 回答
1181 浏览

hadoop - Group By 在 Hive 中的分区列上的性能

我有一个包含 4 列的表,其中 col4 作为 Hive 中的分区列。这是一个巨大的表,每 5 小时插入约 900 万行。我有一个限制,我不能更改此表的设计,因为它也用于其他报告。

对于其中一个用例,我正在尝试创建一个查找表来识别 col4 中每个值的一些数据点,例如

问题:

  1. 对分区列执行 Group By 会影响性能吗?Col4 在这种情况下。

  2. 当我在 col4 上进行 Group By 时,它仍然是全表扫描吗?

  3. 在具有最少全表扫描的分区列上创建查找的最佳方法是什么?

我遇到了这篇文章,但它是给 Impala 的。我不确定 Impala 和 Hive 是否在内部使用相同的 MR 引擎进行数据处理。因此,将此作为一个新问题发布。

0 投票
1 回答
127 浏览

hive - 在 hive 中向外部表添加分区需要很多时间

我想知道将分区添加到外部表的最佳方法是什么。我在 Hive 的 S3 上有一个外部表,分区为 vehicle=/date=/hr=


现在可以在一天中的任何时间添加新车,并且会有车辆在一天中的几个小时或几天内没有数据。

几个可能的解决方案 - msck reapir 表:这需要很多时间 - 通过脚本添加分区:我可能不知道何时创建了新车辆或车辆没有哪个小时的数据

一般人是怎么解决给外部表加分区这个问题的

0 投票
1 回答
492 浏览

hive - Hive 未在查询中使用分区

我有一个视图可以提取 Hive 历史表的最新数据。历史表按天分区。视图的工作方式非常简单——它有一个子查询,它在日期字段(用作分区的那个)上执行最大日期,然后根据该值过滤表。该表包含数百天(分区),每个天都有数百万行。为了加快子查询,我试图将扫描的分区限制为最后一个创建的分区。考虑到假期周末,我将返回四天以确保查询返回数据。

如果我用日期对值进行硬编码,子查询会运行得非常快,并且会正确限制分区。

但是,如果我尝试使用子查询来限制分区以计算最后一个分区,它不会识别分区并执行全表扫描。查询将返回正确的结果,因为过滤器工作,但它需要很长时间,因为它不限制扫描的分区。

我尝试将子查询作为 WITH 语句执行,然后在 bus_date 上使用 INNER JOIN,但得到了相同的结果——未使用分区。

该行为可通过查询重复,因此我将使用它而不是视图来演示:

没有错误消息,并且查询确实有效(过滤器以提取正确的数据),但它会扫描所有分区,因此速度非常慢。如何限制查询以利用子查询中标识的分区?

0 投票
0 回答
237 浏览

date - 通过 Spark 使用日期数据类型的 Hive 分区表

我有一个场景,想获得专家的意见。

我必须通过 spark (python) 从关系数据库的分区中加载 Hive 表。我无法创建配置单元表,因为我不确定源中有多少列并且它们将来可能会改变,所以我必须通过使用来获取数据;select * from tablename.

但是,我确信分区列并且知道这不会改变。此列是源数据库中的“日期”数据类型。

我正在使用SaveAsTable选项partitionBy,并且能够根据分区列正确创建文件夹。蜂巢表也正在创建中。

我面临的问题是,由于分区列是“日期”数据类型,并且分区的配置单元不支持相同的列。因此,我无法通过 hive 或 impala 查询读取数据,因为它说不支持日期作为分区列。

请注意,我不能在发布select声明时对列进行类型转换,因为我必须做 a select * from tablename,而不是select a,b,cast(c) as varchar from table

0 投票
1 回答
50 浏览

date - Unable to create Hive unique paritions

I am unable to create unique partitions. when i am uploading data, it's creating all the dates as partition again and again, even the dates are same

OK Time taken: 0.133 seconds

Time taken: 0.426 seconds

Time taken: 0.14 seconds

Result which i have received :-

0 投票
1 回答
322 浏览

regex - bash - 使用 grep 和 regex 抓取配置单元表的分区

我正在尝试使用 grep 和正则表达式在 bash 中获取配置单元表的分区列名称。我正在尝试这个:

这给了我这样的结果:PARTITIONED BY (

我如何修改我的命令来获取这部分:

PARTITIONED BY ( year char(4), month char(2))

我的最终目标是将所有分区列抓取到变量或数组中,以便我以后可以使用它们。如果有更好的方法来实现我想要做的事情,我也愿意接受。

任何帮助,将不胜感激。

谢谢你。

0 投票
1 回答
79 浏览

hiveql - 如何复制 Hive 分区表

我有一个带有日期列的表,并且在 hive 中的该日期列上进行了分区。假设现在有 300 个部分文件,并且每天只插入一条记录,然后我的表包含 300 条记录。现在我想创建一个重复表,将所有分区文件合并为一个。我该怎么做

0 投票
0 回答
3997 浏览

hive - Pyspark:将数据帧插入分区配置单元表

抱歉,如果我在这里真的很基础,但我需要一点 Pyspark 帮助来尝试动态覆盖配置单元表中的分区。表格已大大简化,但我正在努力解决的问题(我希望)很清楚。我对 PySpark 很陌生,并且已经通过 StackOverflow 搜索了足够多的时间来最终创建一个帐户并询问......!提前致谢!!

我有一个从数据帧(trx)构建的大型分区配置单元表(HIVETABLE_TRX)。我将更多数据提取为数据帧 (trxup),并希望适当地附加或覆盖 HIVETABLE_TRX 中的相关分区。

要添加到 Hive 表的数据帧 (trxup) 有一个我要覆盖的重叠行 ('HOTEL'、'2019-01-03') 和 3 个要追加的增量行。

我尝试将 trxup 插入 HIVETABLE_TRX,如下所示:

我的理解是,这将覆盖 trxup 和 HIVETABLE_TRX 之间共有的一行并附加剩余的行。

如您所见,它无法按名称对齐列并覆盖 HIVETABLE_TRX 中的所有现有分区。

所以: 1. 如何确保 insertInto 的列对齐?- 这是我能想到的最好的方法,虽然成功,但感觉不应该是这样的......?

  1. 我可以将第二个 df (trxup) 插入分区的配置单元表 (HIVETABLE_TRX) 中,只需添加/覆盖适当的分区吗?

在经过大量 Google、Stackoverflow 和灵魂搜索之后,我尝试过的其他事情:

为解释器添加了选项

试图通过 insertInto 上的 trxup 进行分区

从 insertInto 中删除了 overwrite=True,如果不是我想要的,它实际上做了我在这一点上所期望的。

我意识到我可以将 trxup 转换为已分区的配置单元表 (HIVETABLE_TRXUP),然后将它们合并在一起,但这感觉不是一种最佳方式 - 有点违背了分区表的目的,不是吗?

0 投票
1 回答
347 浏览

performance - 为什么选择不同的分区列很慢?

我有一张桌子zhihu_answer_increment,它是按列分区的ym。当我执行 queryselect distinct(ym) from zhihu.zhihu_answer_increment;时,完成了 1 分钟。在此过程中,hive 启动了一个 map-reduce 作业。这是日志:

相比之下, show partitions zhihu_answer_increment;返回结果要快得多(只需几秒钟)。但我需要select distinct(ym) from zhihu.zhihu_answer_increment作为子查询。

那么如何优化这个查询呢?而且我不明白为什么它启动了mapreduce作业,就我而言,仅检查分区目录就足以进行此查询。或者我的考虑太简单了。