파티션이있는 외부 HIVE 테이블을 만들려고합니다. 내 열 이름 중 일부는 대문자입니다. 이로 인해 대문자가있는 열 이름의 값이 이 NULL로 반환 되었기 때문에 테이블을 만드는 동안 문제가 발생했습니다. 그런 다음 ParquetSerDe를 수정하여 SERDEPROPERTIES를 사용하여이 작업을 처리했습니다.이 작업은 외부 테이블 (분할되지 않음)에서 작동합니다. 이제 나는 파티션이있는 외부 테이블을 만들려고 시도하고 때마다 대문자 열 (예 : FieldName)에 액세스하려고하면이 오류가 발생합니다. tablename에서 FieldName을 선택하십시오.하이브의 대/소문자를 구분하는 열 이름
FAILED: RuntimeException Java. Lang.RuntimeException: cannot find field
FieldName from
[org.apache.hadoop[email protected]4f45884b,
org.apache.hadoop[email protected]8f11f27,
org.apache.hadoop[email protected]77e8eb0e,
org.apache.hadoop[email protected]1dae4cd,
org.apache.hadoop[email protected]623e336d
]
생각해 볼만한 제안이 있습니까? 데이터 소스의 스키마를 변경할 수 없습니다.
이
내가 테이블을 만드는 데 사용하는 명령입니다 - 추가 한 후CREATE EXTERNAL TABLE tablename (fieldname string)
PARTITIONED BY (partion_name string)
ROW FORMAT SERDE 'path.ModifiedParquetSerDeLatest'
WITH SERDEPROPERTIES ("casesensitive"="FieldName")
STORED AS INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'
OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat'
을 그리고 파티션 :
ALTER TABLE tablename ADD PARTITION (partition_name='partitionvalue')
LOCATION '/path/to/data'
해결 했습니까? –
@ AndréCasimiro이 작업을한지 얼마되지 않은데 회사 여름 인턴쉽 때였습니다. 다음은 내가이 문제를 제기 한 쪽모이도 메일 링리스트에서 발췌 한 내용입니다. https://mail-archives.apache.org/mod_mbox/parquet-dev/201407.mbox/%[email protected] .com % 3E JIRA 문제를 확인하십시오. 죄송합니다. 여기에 내 조사 결과를 게시하지 않았습니다. 문제를 해결하기 위해 해킹했음을 기억하지만, 정확히 얼마나 효과가 있었고 우리가 한 일을 정확히 기억하지 못합니다. – Raymond26