BIG DATA
[Hive] Cannot recover from this error:java.lang.RuntimeException: java.lang.NoSuchMethodError: org.apache.hadoop.hive.serde2.objectinspector.primitive.TimestampObjectInspector.getPrimitiveJavaObject(Ljava/lang/Object;)Ljava/sql/Timestamp;
코린이s
2023. 1. 19. 11:10
728x90
[오류]
테이블 데이터 위치 지정후 데이터 조회시 Cannot recover from this error:java.lang.RuntimeException: java.lang.NoSuchMethodError: org.apache.hadoop.hive.serde2.objectinspector.primitive.TimestampObjectInspector.getPrimitiveJavaObject(Ljava/lang/Object;)Ljava/sql/Timestamp; 오류 발생
[원인]
- 테이블 생성시 파일 읽을때 사용할 방법을 지정하는데 'org.openx.data.jsonserde.JsonSerDe' 일시 timestamp 타입 지원 안함
CREATE EXTERNAL TABLE `genie_svc.tb_alarmtalk_log`(
`seq_no` int COMMENT 'from deserializer'...)
PARTITIONED BY (
`yyyy` int,
`mm` int,
`dd` int)
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3:/...';
[해결]
1. json 파일을 읽을때
'org.apache.hive.hcatalog.data.JsonSerDe' 로 지정
2. json 파일이 아닐때
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 로 지정
728x90