2016-12-06 9 views
0

5 개의 고정 너비 열이있는 고정 너비 파일이 있습니다. 다음은 파일의 구조입니다. {col1:3char, col2:35char, col3:3char, col4:11char, col5:4char}. 여기에 샘플 파일이 있습니다SerDe를 사용하여 고정 너비 파일로 하이브 테이블을로드 할 수 없습니다.

111 SagarKhatavkar      030  9999ABIT 

112 VishalKataria      028  9999ABIT 

113 GauravSomvanshi     032  9999ABIT 

114 SonalKartekiya      029  9999ABIT 

그렇기 때문에 나는 RegEx를 사용합니다. 다음은 내가 작성한 DDL입니다.

CREATE TABLE emp (emplid STRING, name STRING, age String, salary String, dept STRING) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH SERDEPROPERTIES (
    "input.regex" = "(.{4})(.{35})(.{3})(.{11})(.{4})", 
    "output.format.string" = "%1$s %2$s %3$s %4$s %5$s" 
    ) 

로컬에서로드를 사용하여이 테이블의 데이터를로드 한 후에는 모든 값이 NULL로 제공됩니다.

load data local inpath '/home/test1/emp.txt' into table emp; 

Running select on the table 
hive> select * from emp; 

OK 

NULL NULL NULL NULL NULL 

NULL NULL NULL NULL NULL 

NULL NULL NULL NULL NULL 

NULL NULL NULL NULL NULL 

Time taken: 0.959 seconds, Fetched: 4 row(s) 

DDL의 문제점을 알려주십시오. 하이브의 2.4.2.0-258 버전을 사용하고 있습니다.

답변

0

문제가 있습니다. 첫 번째 열 데이터에 문제가있었습니다. 파일에 EXACT 57 바이트가 있어야합니다. 그렇지 않으면 전체 행을 NULL로 표시합니다.