问题标签 [hiveql]

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 投票
3 回答
90318 浏览

group-by - 蜂巢表达式不在分组中

我在 HIVE 中创建了一个表。它具有以下列:

我想每月获得平均(排名)。我可以使用这个命令。有用。

但是,我也想获取日期信息。我使用这个命令:

它抱怨:Expression Not In Group By Key

0 投票
2 回答
955 浏览

java - 查询两个相关表(Joins)

这是 Hive 中的第一个表 - 它包含有关我们正在购买的商品的信息。

这是上面第一个表中的数据

这是 Hive 中的第二张表 - 它还包含有关我们正在购买的物品的信息。

这就是上表中的数据——

我已将数据减少到只有一个 BUYER_ID(USER_ID) 以使问题易于理解。

问题陈述-

我需要比较Table2with Table1,这意味着我需要查看USER_IDfromTable2BUYER_IDfrom Table1(因为它们都是相同的东西)是否匹配,然后PURCHASED_ITEM在 Table2 中这是一个 PRODUCT_ID(与 ITEM_ID 相同)和 TIMESTAMPS(与 CREATED_TIME 相同)的数组应该ITEM_ID与特定CREATED_TIME的USER_ID(BUYER_ID)相同Table1,并且有时它们(表示PURCHASED_ITEMITEM_ID, )可能不同,或者在比较之后CREATED_TIME缺少某些 PRODUCT_ID 和 TIMESTAMPS 。Table2Table1

我的意思是,对于特定的 BUYER_ID(USER_ID),和 in 的计数PRODUCT_ID应该TIMESTAMPSTable2Table1 中的计数ITEM_ID和计数相同,CREATED_TIME并且内容应该相同。如果它们不一样或缺少条目Table2,那么我需要打印结果,这个特定的ITEM_IDCREATED_TIME缺少Table2或在比较之后PRODUCT_IDTIMESTAMPS不一样Table1

因此,例如,目前在 Table1 中,BUYER_ID 1015826235我有5 ITEM_ID5 CREATED_TIME,所以在 Table2 中,我应该在一行中5 PRODUCT_ID5 TIMESTAMPSTable1 完全相同。USER_ID(BUYER_ID)如果它不一样或条目丢失,那么我需要打印结果,显示这个丢失或者这个数据是错误的。

所以只是为了更清楚-

PURCHASED_ITEM是一个结构数组,Table2它包含两个东西PRODUCT_IDTIMESTAMPS

如果USER_IDandBUYER_ID得到匹配,则PRODUCT_IDinTable2应与ITEM_IDin匹配Table1TIMESTAMPSinTable2应与CREATED_TIMEin匹配Table1

更新

HiveQL SQL 查询问题:-

我为第一个问题写的查询。查询对吗?

0 投票
2 回答
63733 浏览

sql - 使用 HiveQL(Hadoop) 在 Hive 中连接两个表

可能重复:
SQL Query JOIN with Table

这是上面第一个表中的数据

这是 Hive 中的第二张表 - 它还包含有关我们正在购买的物品的信息。

这是上面第二个表(TestingTable2)中的数据-

比较以便满足以下场景TestingTable2TestingTable1

在比较 from 之后,找到与 TestTable1 对应的AND不PRODUCT_ID匹配的AND 。TIMESTAMPSTestingTable2ITEM_IDCREATED_TIMEBUYER_ID(USER_ID)TestingTable1

因此,如果您查看TestingTable2此(最后)ITEM_ID 210002448035来自TestingTable1的数据与数据不匹配,TestingTable2 PRODUCT_ID- 200002448035 并且与时间戳类似。所以我想使用 HiveQL 查询显示以下结果。

谁能帮我这个。因为我是 HiveQL 的新手,所以有很多问题。

更新:-

我已经写了这个查询,但它没有按照我想要的方式工作。

又一更新

根据user1166147评论。我根据他的查询写了我的查询。在蜂巢中,我猜INNER JOIN是简单地写的JOIN

这是我的以下查询。

运行上述查询后,我得到的结果为零。

最后一次更新:-

我的错,我在表格中没有准确的数据,所以这就是我没有得到结果的原因。是的,它正在执行上述实际查询。

0 投票
3 回答
105583 浏览

hadoop - 在 Hive 中分解结构数组

这是下面的 Hive 表

这就是上表中的数据——

爆炸数组后,有什么方法可以从 HiveQL 获得以下输出?

更新

我编写了此查询以获取上述格式的输出,但它并没有以我想要的方式给我结果。

谁能帮助我我做错了什么?任何建议将不胜感激。

0 投票
1 回答
2418 浏览

performance - 自定义 Mapper 和 Reducer 与 HiveQL

问题陈述:-

我需要比较两个表Table1Table2它们都存储相同的东西。所以我需要Table2与需要Table1进行比较Table1的主表进行比较。因此,在比较之后,我需要制作一份Table2存在某种差异的报告。这两张表有很多数据,大约 TB 的数据。所以目前我已经写信HiveQL进行比较并取回数据。

所以我的问题是哪个更好PERFORMANCE,写一个CUSTOM MAPPER and REDUCER来做这种工作,或者HiveQL我写的那个会很好,因为我将在数百万条记录上加入这两个表。据我所知,HiveQL内部(幕后)生成优化的自定义 map-reducer 并提交执行并取回结果。

0 投票
3 回答
5782 浏览

sql - 查找昨天日期的每个 BUYER_ID 的 TOP 10 最新记录

这是下表

这是上表中的以下数据-

如果您在表中看到上述数据,则只有两个 UNIQUEBUYER_ID并且对应于我拥有的那些ITEM_IDAND CREATED_TIME。每当我为每个BUYER_ID.

所以为此BUYER_ID-我只需要昨天日期34512201的每个BUYER_ID基础上的 10 条最新记录。CREATED_TIME

每个都BUYER_ID可以有任何一天的数据。但是我对今天的数据(总是指昨天的日期)特别感兴趣,方法是查看CREATED_TIME

查找TOP 10每个BUYER_ID昨天日期的最新数据。下面是我应该得到的与每个BUYER_ID.

样本输出。

我正在使用HiveHive支持类似 SQL 的语法。所以我需要确保 SQL 也应该在 Hive 环境中工作。

谁能帮我这个?

更新:-

我正在使用下面的查询,我需要从下面的查询中获取最新的前 10 名,并且需要再添加一个限定符以进行日期检查,这意味着where clause for yesterday's date- 我不能TOP 10在这里使用,因为 Hive 不支持TOP 10sql 语法。我需要其他方法来解决这个问题。

另一个更新:-

我在下面的查询中使用RANK UserDefinedFunction.

这是Java中的RANK UDF函数-

上面的查询不能按照我想要的方式工作,我猜在那个查询中必须做出某种扭曲。

有什么方法可以在不使用 HiveQL 中的任何 UDF 的情况下做到这一点?

0 投票
1 回答
6945 浏览

sql - 使用 HiveQL 爆炸结构数组

下面是表2中的数据

我可以通过使用下面的查询来分解上述数据,它适用于上述数据-

我会得到这样的输出,这很好 -

但在某些情况下,我在下表中有这样的数据,多个时间戳为相同的 product_id 附加了井号-

我需要使用 HiveQL 查询对上述数据进行这样的输出-

这有可能以某种方式做到这一点吗?

任何建议将不胜感激。?

PS我几天前问过这个问题,但在那种情况下数据不同,现在数据完全不同,我需要类似的输出。

0 投票
1 回答
540 浏览

hadoop - 查找两列匹配的 TOP 3

这是我的 Table1 中的以下数据

因此,如果我需要澄清上述情况——我在上表中有这样的数据——对于用户1345653,我有这个 PID 330760137950 four times,但时间戳不同。所以我需要这样的输出 -

我需要的输出:-

所以基本上如果BIDPID相同但不同timestamps,那么我需要按时间降序排序的前 3 名

为此,我rank UDF在 Hive 中创建了(用户定义的函数)。我写了下面的查询,但它对我不起作用。谁可以帮我这个事?

所以通过上面的查询,我得到这样的输出

这是错误的,因为我缺少Expected Output上面的最后两行。谁能帮我这个?

0 投票
1 回答
2184 浏览

hadoop - Hive 中的日期差异小于 15 分钟

下面是我的查询,在最后一行中,我试图查看日期之间的差异是否在 15 分钟内。但是每当我运行以下查询时。

我总是得到例外 -

我的查询有什么问题吗?或者在 Hive 中我们不能以分钟为单位计算日期之间的差异?任何建议将不胜感激。

0 投票
1 回答
22746 浏览

hadoop - Hive QL - 限制每个项目的行数

如果我在 where 子句中列出了多个项目,如何将列表中每个项目的结果限制为 N?

前任: