HDFS にログ ファイルがあり、値はコンマで区切られています。例えば:
2012-10-11 12:00,opened_browser,userid111,deviceid222
ここで、このファイルを、列「タイムスタンプ」、「アクション」を持ち、「ユーザー ID」、「デバイス ID」で分割された Hive テーブルにロードしたいと考えています。ログ ファイルの最後の 2 列をテーブルのパーティションとして取得するように Hive に指示するにはどうすればよいですか? すべての例e.g. "hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');"
では、スクリプトでパーティションを定義する必要がありますが、HDFS ファイルからパーティションを自動的にセットアップする必要があります。
1 つの解決策は、4 つの列すべてを含むパーティション化されていない中間テーブルを作成し、ファイルから入力してから作成するINSERT into first_table PARTITION (userid,deviceid) select from intermediate_table timestamp,action,userid,deviceid;
ことですが、それは追加のタスクであり、2 つの非常に類似したテーブルが作成されます。または、外部テーブルを中間として作成する必要があります。