복붙노트

[HADOOP] 하이브 외부 테이블의 최대 열 수

HADOOP

하이브 외부 테이블의 최대 열 수

아마존의 EMR에서 하이브를 설정하여 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...");

해결법

  1. ==============================

    1.나는 몇 년 전에 비슷한 문제에 부딪쳤다. 올바르게 기억한다면, 하이브는 데이터베이스에 쓰고있는 쿼리의 텍스트 길이에 제한을 둔다는 것입니다. 호출 스택을 살펴보면 해당 변수가 구성 가능하고 코드를 편집 할 위치가 아닌지를 알 수 있습니다.

    나는 몇 년 전에 비슷한 문제에 부딪쳤다. 올바르게 기억한다면, 하이브는 데이터베이스에 쓰고있는 쿼리의 텍스트 길이에 제한을 둔다는 것입니다. 호출 스택을 살펴보면 해당 변수가 구성 가능하고 코드를 편집 할 위치가 아닌지를 알 수 있습니다.

  2. from https://stackoverflow.com/questions/10418639/maximum-number-of-columns-in-hive-external-tables by cc-by-sa and MIT license