2

クラウドの S3 バケット内に、いくつかのデータを含む CSV ファイルがあります。

そのデータを、列「キー」と「値」を持つ DynamoDB テーブルにエクスポートしたいと考えています。

私が書いた現在のハイブスクリプトは次のとおりです。

CREATE EXTERNAL TABLE FromCSV(key string, value string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ', '
LOCATION 's3://mybucket/output/';                    

CREATE EXTERNAL TABLE hiveTransfer(col1 string, col2 string)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' 
TBLPROPERTIES ("dynamodb.table.name" = "InvertedIndex", 
"dynamodb.column.mapping" = "col1:key,col2:value");  

INSERT OVERWRITE TABLE hiveTransfer SELECT * FROM FromCSV;

これで、基本的にスクリプトは機能します。ただし、このスクリプトを次のように変更したいと思います。

1) スクリプトは、テーブル「InvertedIndex」が DynamoDB に既に存在する場合にのみ機能します。スクリプトで新しいテーブルを作成し、データを既存のように配置したいと考えています。

2) CSV では、キーは常に文字列ですが、文字列または整数の 2 種類の値があります。スクリプトで 2 つを区別し、2 つの異なるテーブルを作成するようにしたいと思います。

これらの 2 つの変更に関するヘルプは感謝されます。ありがとうございました

4

1 に答える 1

3

こんにちは、これは達成できますが、些細なケースではありません。

1) Dynamo テーブルは Amazon クラウドで管理されているため、Hive では作成できない dynamo テーブルを作成する場合。私の頭に浮かぶことの1つは、ダイナモテーブルを作成するためのHive UDFを作成し、挿入を実行する前にダミークエリ内で呼び出すことです。例えば:

 SELECT CREATE_DYNO_TABLE() FROM dummy;

ダミー テーブルには 1 つのレコードしかありません。

2) 読み込みを 2 つのクエリに分割できます。1 つのクエリでは、RLIKE 演算子と [0-9]+ 正規表現を使用して数値とその他の否定を検出します。

HTH、ディノ

于 2013-06-27T07:47:28.130 に答える