Amazon の EMR で Hive をセットアップして、DynamoDB テーブルからデータをプルして S3 にダンプしようとしています。ここにある指示に従いましたが、ほとんどのテーブルで成功しました。ただし、DynamoDB テーブルが 1 つの場合、エラーが発生します (以下を参照)。
問題のテーブルには多くの列 (>100) があり、マッピングをそれらのサブセットのみに削減するとスクリプトを実行できるため、これが問題であると想定していますが、ドキュメントが見つかりませんこのあたり。
定義できる列の数にある種の厳しい制限はありますか? または、ここでヒットする可能性が高い他の制限はありますか? これを回避する方法はありますか?
私が得ているエラーは次のようになります:
FAILED: Error in metadata: javax.jdo.JDODataStoreException: Put request failed : INSERT INTO `TABLE_PARAMS` (`PARAM_VALUE`,`TBL_ID`,`PARAM_KEY`) VALUES (?,?,?)
NestedThrowables:
org.datanucleus.store.mapped.exceptions.MappedDatastoreException: INSERT INTO `TABLE_PARAMS` (`PARAM_VALUE`,`TBL_ID`,`PARAM_KEY`) VALUES (?,?,?)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
実行しようとしているスクリプトは次のようになります。
CREATE EXTERNAL TABLE hive_WSOP_DEV_STATS_input (col1 string, col2 string...)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES ( "dynamodb.table.name" = "DYNAMO_TABLE_NAME",
"dynamodb.column.mapping" = "col1:col1,col2:col2...");