问题标签 [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.
group-by - 蜂巢表达式不在分组中
我在 HIVE 中创建了一个表。它具有以下列:
我想每月获得平均(排名)。我可以使用这个命令。有用。
但是,我也想获取日期信息。我使用这个命令:
它抱怨:Expression Not In Group By Key
java - 查询两个相关表(Joins)
这是 Hive 中的第一个表 - 它包含有关我们正在购买的商品的信息。
这是上面第一个表中的数据
这是 Hive 中的第二张表 - 它还包含有关我们正在购买的物品的信息。
这就是上表中的数据——
我已将数据减少到只有一个 BUYER_ID(USER_ID) 以使问题易于理解。
问题陈述-
我需要比较Table2
with Table1
,这意味着我需要查看USER_ID
fromTable2
和BUYER_ID
from Table1
(因为它们都是相同的东西)是否匹配,然后PURCHASED_ITEM
在 Table2 中这是一个 PRODUCT_ID(与 ITEM_ID 相同)和 TIMESTAMPS(与 CREATED_TIME 相同)的数组应该ITEM_ID
与特定CREATED_TIME
的USER_ID(BUYER_ID)相同Table1
,并且有时它们(表示PURCHASED_ITEM
和ITEM_ID
, )可能不同,或者在比较之后CREATED_TIME
缺少某些 PRODUCT_ID 和 TIMESTAMPS 。Table2
Table1
我的意思是,对于特定的 BUYER_ID(USER_ID),和 in 的计数PRODUCT_ID
应该TIMESTAMPS
与Table2
Table1 中的计数ITEM_ID
和计数相同,CREATED_TIME
并且内容应该相同。如果它们不一样或缺少条目Table2
,那么我需要打印结果,这个特定的ITEM_ID
和CREATED_TIME
缺少Table2
或在比较之后PRODUCT_ID
和TIMESTAMPS
不一样Table1
。
因此,例如,目前在 Table1 中,BUYER_ID 1015826235
我有5 ITEM_ID
和5 CREATED_TIME
,所以在 Table2 中,我应该在一行中5 PRODUCT_ID
与5 TIMESTAMPS
Table1 完全相同。USER_ID(BUYER_ID)
如果它不一样或条目丢失,那么我需要打印结果,显示这个丢失或者这个数据是错误的。
所以只是为了更清楚-
PURCHASED_ITEM
是一个结构数组,Table2
它包含两个东西PRODUCT_ID
和TIMESTAMPS
。
如果USER_ID
andBUYER_ID
得到匹配,则PRODUCT_ID
inTable2
应与ITEM_ID
in匹配Table1
,TIMESTAMPS
inTable2
应与CREATED_TIME
in匹配Table1
。
更新
HiveQL SQL 查询问题:-
我为第一个问题写的查询。查询对吗?
sql - 使用 HiveQL(Hadoop) 在 Hive 中连接两个表
这是上面第一个表中的数据
这是 Hive 中的第二张表 - 它还包含有关我们正在购买的物品的信息。
这是上面第二个表(TestingTable2
)中的数据-
比较以便满足以下场景TestingTable2
。TestingTable1
在比较 from 之后,找到与 TestTable1 对应的AND不PRODUCT_ID
匹配的AND 。TIMESTAMPS
TestingTable2
ITEM_ID
CREATED_TIME
BUYER_ID(USER_ID)
TestingTable1
因此,如果您查看TestingTable2
此(最后)ITEM_ID 210002448035
来自TestingTable1
的数据与数据不匹配,TestingTable2
PRODUCT_ID- 200002448035
并且与时间戳类似。所以我想使用 HiveQL 查询显示以下结果。
谁能帮我这个。因为我是 HiveQL 的新手,所以有很多问题。
更新:-
我已经写了这个查询,但它没有按照我想要的方式工作。
又一更新
根据user1166147
评论。我根据他的查询写了我的查询。在蜂巢中,我猜INNER JOIN
是简单地写的JOIN
。
这是我的以下查询。
运行上述查询后,我得到的结果为零。
最后一次更新:-
我的错,我在表格中没有准确的数据,所以这就是我没有得到结果的原因。是的,它正在执行上述实际查询。
hadoop - 在 Hive 中分解结构数组
这是下面的 Hive 表
这就是上表中的数据——
爆炸数组后,有什么方法可以从 HiveQL 获得以下输出?
更新
我编写了此查询以获取上述格式的输出,但它并没有以我想要的方式给我结果。
谁能帮助我我做错了什么?任何建议将不胜感激。
performance - 自定义 Mapper 和 Reducer 与 HiveQL
问题陈述:-
我需要比较两个表Table1
,Table2
它们都存储相同的东西。所以我需要Table2
与需要Table1
进行比较Table1
的主表进行比较。因此,在比较之后,我需要制作一份Table2
存在某种差异的报告。这两张表有很多数据,大约 TB 的数据。所以目前我已经写信HiveQL
进行比较并取回数据。
所以我的问题是哪个更好PERFORMANCE
,写一个CUSTOM MAPPER and REDUCER
来做这种工作,或者HiveQL
我写的那个会很好,因为我将在数百万条记录上加入这两个表。据我所知,HiveQL
内部(幕后)生成优化的自定义 map-reducer 并提交执行并取回结果。
sql - 查找昨天日期的每个 BUYER_ID 的 TOP 10 最新记录
这是下表
这是上表中的以下数据-
如果您在表中看到上述数据,则只有两个 UNIQUEBUYER_ID
并且对应于我拥有的那些ITEM_ID
AND CREATED_TIME
。每当我为每个BUYER_ID
.
所以为此BUYER_ID
-我只需要昨天日期34512201
的每个BUYER_ID
基础上的 10 条最新记录。CREATED_TIME
每个都BUYER_ID
可以有任何一天的数据。但是我对今天的数据(总是指昨天的日期)特别感兴趣,方法是查看CREATED_TIME
查找TOP 10
每个BUYER_ID
昨天日期的最新数据。下面是我应该得到的与每个BUYER_ID
.
样本输出。
我正在使用Hive
并Hive
支持类似 SQL 的语法。所以我需要确保 SQL 也应该在 Hive 环境中工作。
谁能帮我这个?
更新:-
我正在使用下面的查询,我需要从下面的查询中获取最新的前 10 名,并且需要再添加一个限定符以进行日期检查,这意味着where clause for yesterday's date
- 我不能TOP 10
在这里使用,因为 Hive 不支持TOP 10
sql 语法。我需要其他方法来解决这个问题。
另一个更新:-
我在下面的查询中使用RANK UserDefinedFunction
.
这是Java中的RANK UDF函数-
上面的查询不能按照我想要的方式工作,我猜在那个查询中必须做出某种扭曲。
有什么方法可以在不使用 HiveQL 中的任何 UDF 的情况下做到这一点?
sql - 使用 HiveQL 爆炸结构数组
下面是表2中的数据
我可以通过使用下面的查询来分解上述数据,它适用于上述数据-
我会得到这样的输出,这很好 -
但在某些情况下,我在下表中有这样的数据,多个时间戳为相同的 product_id 附加了井号-
我需要使用 HiveQL 查询对上述数据进行这样的输出-
这有可能以某种方式做到这一点吗?
任何建议将不胜感激。?
PS我几天前问过这个问题,但在那种情况下数据不同,现在数据完全不同,我需要类似的输出。
hadoop - 查找两列匹配的 TOP 3
这是我的 Table1 中的以下数据
因此,如果我需要澄清上述情况——我在上表中有这样的数据——对于用户1345653
,我有这个 PID 330760137950
four times
,但时间戳不同。所以我需要这样的输出 -
我需要的输出:-
所以基本上如果BID
和PID
相同但不同timestamps
,那么我需要按时间降序排序的前 3 名
为此,我rank UDF
在 Hive 中创建了(用户定义的函数)。我写了下面的查询,但它对我不起作用。谁可以帮我这个事?
所以通过上面的查询,我得到这样的输出
这是错误的,因为我缺少Expected Output
上面的最后两行。谁能帮我这个?
hadoop - Hive 中的日期差异小于 15 分钟
下面是我的查询,在最后一行中,我试图查看日期之间的差异是否在 15 分钟内。但是每当我运行以下查询时。
我总是得到例外 -
我的查询有什么问题吗?或者在 Hive 中我们不能以分钟为单位计算日期之间的差异?任何建议将不胜感激。
hadoop - Hive QL - 限制每个项目的行数
如果我在 where 子句中列出了多个项目,如何将列表中每个项目的结果限制为 N?
前任: