코알못

[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; 본문

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
Comments