HiveScriptの場合はスクリプトファイルの場所と、オプションで入力ファイルのS3ロケーションと出力ファイルのS3ロケーションなどを設定します。
前回やったとおり、入出力のロケーションについてはHiveScript中にもEXTERNAL TABLEとして記載できるのでここではHiveScriptのみの設定でOKです。
ただしHiveScriptの場合、スクリプトのS3ロケーションの部分を前回と内容を少しかえる必要があります。
前回は入力のバケットファイルをファイルパスまで指定しましたが、今回はバケットフォルダで指定し、その下の全てのファイルが入力となります。
hive.q
CREATE EXTERNAL TABLE IF NOT EXISTS csv_origin (yyyy string, mm string, dd string, title string, body string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' LOCATION 's3://csv-origin/input/'; CREATE EXTERNAL TABLE IF NOT EXISTS csv_archive (dd string, title string, body string) PARTITIONED BY (yyyy string, mm string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION 's3://csv-archive/rslt/'; set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; FROM csv_origin co INSERT OVERWRITE TABLE csv_archive PARTITION (yyyy, mm) SELECT co.dd, co.title, co.body, co.yyyy, co.mm DISTRIBUTE BY co.yyyy, co.mm;
スクリプト用のバケットにスクリプトファイルを配置します。
EMRでJob Flowを作成し、Hive Programを選択します。
いまアップしたスクリプトファイルの場所を設定します。
Script Location: s3://hivescript-test/hive.q
あとはそのまま実行します。
しばらくするとジョブが終了し、出力を確認できます。
03,title32,body32 16,title33,body33
以上です。