在这个大数据中选择的方法/算法

时间:2012-06-30 04:57:09

标签: java sql hadoop mapreduce hive

这是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)还有其他方法吗?

任何建议都将受到赞赏

0 个答案:

没有答案