0

私はこれに関する他のいくつかの投稿を読みました。特に、Hive でそれを行う方法についての greg による回答を含むこの質問です。ただし、可変量の列を持つ DynamoDB テーブルを説明する方法を知りたいですか?

つまり、元の DynamoDB テーブルには、さまざまな列で動的に追加された行があります。Amazon が DataPipeLine サービスで使用している exportDynamoDBToS3 スクリプトを表示しようとしましたが、列をマップしていないように見える次のようなコードがあります。

-- Map DynamoDB Table
CREATE EXTERNAL TABLE dynamodb_table (item map<string,string>)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES ("dynamodb.table.name" = "MyTable");

(余談ですが、私は Datapipe システムも使用してみましたが、すべてが失敗することなくシェル スクリプトを実行するなどの単純なタスクを実行する方法をドキュメントから理解できなかったので、かなりイライラしました。)

4

1 に答える 1

0

元の質問に投稿した Hive スクリプトは問題なく動作することがわかりましたが、正しいバージョンの Hive を使用している場合に限られます。install-hive コマンドで最新バージョンをインストールするように設定しても、使用されるバージョンは実際には AMI バージョンに依存しているようです。

かなりの検索を行った後、Amazonのドキュメントで次のことを見つけることができました(強調は私のものです):

Amazon DynamoDB に保存されたデータを参照する Hive テーブルを作成します。これは、列マッピングを指定していない点を除いて、前の例と似ています。テーブルには、マップ型の列が 1 つだけ含まれている必要があります。その後、Amazon S3 に EXTERNAL テーブルを作成すると、INSERT OVERWRITE コマンドを呼び出して、Amazon DynamoDB から Amazon S3 にデータを書き込むことができます。これを使用して、Amazon S3 に Amazon DynamoDB データのアーカイブを作成できます。列のマッピングがないため、この方法でエクスポートされたテーブルをクエリすることはできません。列マッピングを指定せずにデータをエクスポートすることは、Hive 0.8.1.5 以降で使用できます。これは、 Amazon EMR AMI 2.2.3 以降でサポートされています。

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EMR_Hive_Commands.html

于 2013-04-08T17:40:36.040 に答える