バックアップの手段として (EMR 経由で) DynamoDB テーブルを s3 にエクスポートします。エクスポートするときは、データを lzo 圧縮ファイルとして保存します。私のハイブ クエリは以下のとおりですが、基本的にはhttp://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/EMR_Hive_Commands.htmlの「データ圧縮を使用して Amazon DynamoDB テーブルを Amazon S3 バケットにエクスポートするには」に従いました。
逆のことをしたいのですが、LZOファイルを取得して、それらをハイブテーブルに戻します。これどうやってやるの?入力用のハイブ構成プロパティが表示されることを期待していましたが、ありません。私はググっていくつかのヒントを見つけましたが、決定的なものも機能するものもありません。
s3 のファイルの形式は次のとおりです: s3://[mybucket]/backup/year=2012/month=08/day=01/000000.lzo
エクスポートを行う HQL は次のとおりです。
SET dynamodb.throughput.read.percent=1.0;
SET hive.exec.compress.output=true;
SET io.seqfile.compression.type=BLOCK;
SET mapred.output.compression.codec = com.hadoop.compression.lzo.LzopCodec;
CREATE EXTERNAL TABLE hiveSBackup (id bigint, periodStart string, allotted bigint, remaining bigint, created string, seconds bigint, served bigint, modified string)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES ("dynamodb.table.name" = "${DYNAMOTABLENAME}",
"dynamodb.column.mapping" = "id:id,periodStart:periodStart,allotted:allotted,remaining:remaining,created:created,seconds:seconds,served:served,modified:modified");
CREATE EXTERNAL TABLE s3_export (id bigint, periodStart string, allotted bigint, remaining bigint, created string, seconds bigint, served bigint, modified string)
PARTITIONED BY (year string, month string, day string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3://<mybucket>/backup';
INSERT OVERWRITE TABLE s3_export
PARTITION (year="${PARTITIONYEAR}", month="${PARTITIONMONTH}", day="${PARTITIONDAY}")
SELECT * from hiveSBackup;
s3から取得し、解凍して、ハイブテーブルに入れる方法はありますか??