这是Hive中的一个表格 - 它包含有关我们正在购买的商品的信息。
CREATE EXTERNAL TABLE IF NOT EXISTS Table1
(
UID BIGINT,
ITEMS_PURCHASED ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
这是上表中的数据 -
1015826235 [{"product_id":220003038067,"timestamps":"1340321132000"},{"product_id":300003861266,"timestamps":"1340271857000"},{"product_id":140002997245,"timestamps":"1339694926000"},{"product_id":200002448035,"timestamps":"1339172659000"},{"product_id":260003553381,"timestamps":"1339072514000"}]
这是Hive中的第二个表 - 它还包含有关我们正在购买的项目的信息。
CREATE EXTERNAL TABLE IF NOT EXISTS Table2
(
ITEM_ID BIGINT,
CREATED_TIME STRING,
BUYER_ID BIGINT
)
这是上面第二个表中的数据
220003038067 2012-06-21 1015826235
300003861266 2012-06-21 1015826235
140002997245 2012-06-14 1015826235
200002448035 2012-06-08 1015826235
260003553381 2012-06-07 1015826235
问题陈述 - 我们需要在UID(和BUYER_ID)上比较上面两个表格。作为一个表(表1)中的UID和第二个表(表2)中的BUYER_ID,它们都是相同的。所以我需要看看UID和BUYER_ID是否匹配,那么Table1表中的ITEMS_PURCHASED应该与Table2表中的ITEM_ID和CREATED_TIME相同,如果它们(意味着ITEMS_PURCHASED和ITEM_ID,CREATED_TIME)不相同,那么我需要做一些事情。我可以生成一些报告,说明这个数据的准确度和准确度是多少。
所以只是为了让它更清晰 -
ITEMS_PURCHASED是Table1表中的Struct数组,它包含两件事PRODUCT_ID和TIMESTAMPS。 如果UID和BUYER_ID匹配,则表1中的PRODUCT_ID应与表2中的ITEM_ID匹配,表1中的TIMESTAMPS应与表2中的CREATED_TIME匹配。
还有一件事,这些表中有数百万个数据。我已将它减少到只有一条记录来简化问题。
我想我需要为此编写一些MapReduce作业。这是我第一次使用Hive,Hadoop和Map Reduce。所以这就是我面临很多问题的原因。
我在考虑两种解决方案 -
1)通过比较用户ID和buyer_id
来检查数百万个数据2)或者对一些UID和buyer_id进行采样,然后比较数据。
3)还有其他方法吗?
任何建议都将受到赞赏