问题标签 [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.
hive - 仅当 HIVE 中不存在分区时,如何插入覆盖分区?
仅当 HIVE 中不存在分区时,如何插入覆盖分区?
就像标题一样。我正在做一些总是需要重写配置单元表的东西。我有具有多个分区的表,当我在更改后重新运行代码时,我只想插入新分区而不更改现有分区。
hadoop - Group By 在 Hive 中的分区列上的性能
我有一个包含 4 列的表,其中 col4 作为 Hive 中的分区列。这是一个巨大的表,每 5 小时插入约 900 万行。我有一个限制,我不能更改此表的设计,因为它也用于其他报告。
对于其中一个用例,我正在尝试创建一个查找表来识别 col4 中每个值的一些数据点,例如
问题:
对分区列执行 Group By 会影响性能吗?Col4 在这种情况下。
当我在 col4 上进行 Group By 时,它仍然是全表扫描吗?
在具有最少全表扫描的分区列上创建查找的最佳方法是什么?
我遇到了这篇文章,但它是给 Impala 的。我不确定 Impala 和 Hive 是否在内部使用相同的 MR 引擎进行数据处理。因此,将此作为一个新问题发布。
hive - 在 hive 中向外部表添加分区需要很多时间
我想知道将分区添加到外部表的最佳方法是什么。我在 Hive 的 S3 上有一个外部表,分区为 vehicle=/date=/hr=
现在可以在一天中的任何时间添加新车,并且会有车辆在一天中的几个小时或几天内没有数据。
几个可能的解决方案 - msck reapir 表:这需要很多时间 - 通过脚本添加分区:我可能不知道何时创建了新车辆或车辆没有哪个小时的数据
一般人是怎么解决给外部表加分区这个问题的
hive - Hive 未在查询中使用分区
我有一个视图可以提取 Hive 历史表的最新数据。历史表按天分区。视图的工作方式非常简单——它有一个子查询,它在日期字段(用作分区的那个)上执行最大日期,然后根据该值过滤表。该表包含数百天(分区),每个天都有数百万行。为了加快子查询,我试图将扫描的分区限制为最后一个创建的分区。考虑到假期周末,我将返回四天以确保查询返回数据。
如果我用日期对值进行硬编码,子查询会运行得非常快,并且会正确限制分区。
但是,如果我尝试使用子查询来限制分区以计算最后一个分区,它不会识别分区并执行全表扫描。查询将返回正确的结果,因为过滤器工作,但它需要很长时间,因为它不限制扫描的分区。
我尝试将子查询作为 WITH 语句执行,然后在 bus_date 上使用 INNER JOIN,但得到了相同的结果——未使用分区。
该行为可通过查询重复,因此我将使用它而不是视图来演示:
没有错误消息,并且查询确实有效(过滤器以提取正确的数据),但它会扫描所有分区,因此速度非常慢。如何限制查询以利用子查询中标识的分区?
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
。
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 :-
regex - bash - 使用 grep 和 regex 抓取配置单元表的分区
我正在尝试使用 grep 和正则表达式在 bash 中获取配置单元表的分区列名称。我正在尝试这个:
这给了我这样的结果:PARTITIONED BY (
我如何修改我的命令来获取这部分:
PARTITIONED BY (
year char(4),
month char(2))
我的最终目标是将所有分区列抓取到变量或数组中,以便我以后可以使用它们。如果有更好的方法来实现我想要做的事情,我也愿意接受。
任何帮助,将不胜感激。
谢谢你。
hiveql - 如何复制 Hive 分区表
我有一个带有日期列的表,并且在 hive 中的该日期列上进行了分区。假设现在有 300 个部分文件,并且每天只插入一条记录,然后我的表包含 300 条记录。现在我想创建一个重复表,将所有分区文件合并为一个。我该怎么做
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 的列对齐?- 这是我能想到的最好的方法,虽然成功,但感觉不应该是这样的......?
- 我可以将第二个 df (trxup) 插入分区的配置单元表 (HIVETABLE_TRX) 中,只需添加/覆盖适当的分区吗?
在经过大量 Google、Stackoverflow 和灵魂搜索之后,我尝试过的其他事情:
为解释器添加了选项
试图通过 insertInto 上的 trxup 进行分区
从 insertInto 中删除了 overwrite=True,如果不是我想要的,它实际上做了我在这一点上所期望的。
我意识到我可以将 trxup 转换为已分区的配置单元表 (HIVETABLE_TRXUP),然后将它们合并在一起,但这感觉不是一种最佳方式 - 有点违背了分区表的目的,不是吗?
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作业,就我而言,仅检查分区目录就足以进行此查询。或者我的考虑太简单了。