我正在尝试在 Amazon 的 EMR 上设置 Hive,以从 DynamoDB 表中提取数据并将其转储到 S3。我已按照此处的说明进行操作,并且在我们的大多数桌子上都取得了成功。但是,对于一个 DynamoDB 表,我收到一个错误(如下所示)。
有问题的表有很多列(> 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...");