0

これは Hive の 1 つのテーブルです。購入するアイテムに関する情報が含まれています。

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 の 2 番目のテーブルです。購入するアイテムに関する情報も含まれています。

CREATE EXTERNAL TABLE IF NOT EXISTS Table2
(
ITEM_ID BIGINT,
CREATED_TIME STRING,
BUYER_ID BIGINT
)

そして、これは上記の2番目の表のデータです

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

問題文 - 上記の 2 つのテーブルを UID( および BUYER_ID) に基づいて比較する必要があります。1 つのテーブル (Table1) の UID と 2 つ目のテーブル (Table2) の 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 の 2 つが含まれています。UID と BUYER_ID が一致する場合、Table1 の PRODUCT_ID は Table2 の ITEM_ID と一致し、Table1 の TIMESTAMPS は Table2 の CREATED_TIME と一致する必要があります。

もう 1 つ、これらのテーブルには何百万ものデータが含まれています。問題を単純化するために、レコードを 1 つだけに減らしました。

これには MapReduce ジョブを作成する必要があると思います。Hive、Hadoop、Map Reduce を使用するのはこれが初めてです。それが私が多くの問題に直面している理由です。

私は2つの解決策を考えていました-

1) ユーザー ID と buy_id を比較して、何百万ものデータをチェックする

2) または、いくつかの UID と buy_id をサンプリングしてから、データを比較します。

3) 他のアプローチはありますか?

任意の提案をいただければ幸いです

4

0 に答える 0