1

我正在尝试在 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...");
4

1 回答 1

2

几年前我遇到了类似的问题。如果我没记错的话,问题是配置单元限制了它写入数据库的查询中的文本长度。如果您查看调用堆栈,您可能会发现该变量是否可配置,以及在哪里编辑代码。

于 2012-05-03T15:18:27.850 回答