2017-12-25 3 views
1

이 유형의 질문이 여러 번 요청되었지만 이러한 해결책은 저에게 효과적이지 않습니다. 데이터가지도 전용 작업 출력에서 ​​나온 것이므로 외부 하이브 테이블을 만들었습니다. 그런 다음 특정 파일에 대한 경로가 지정된 명령을로드하여. 그것은 ok를 보였다. 하지만 select * from table 명령을 내리면 null 값을 가진 일부 열을 반환합니다. 내가 실행 한 각 명령은 오류 그림에 있습니다.하이브의 Select 문이 null 값을 가진 일부 열을 반환합니다.

파일의 내 분리 문자는 ||이므로 작성 테이블 명령에서도 동일한 부분을 언급했습니다.

내 입력 파일은 file pic입니다. 다음은 error pic 입니다. 또한 외부 테이블 대신 일반 테이블을 사용해 보았습니다. 그것도 같은 오류를 보여 주었다. 나는 또한 구분자를 //||\|\|으로 언급하여 시도했다. 그러나 아무도 일하지 않았다.

+0

것은이 구분 기호는 하나의 문자가 예상대로 작동합니까? – Bala

+0

예! 이것을 게시 한 후에 구분 기호를 변경하려고 시도했지만 작동합니다. 하지만이'||' – Previnkumar

답변

0

문제는 직면 한 여러 문자가 FIELD 구분 기호와 관련되어 있음을 나타냅니다.

은 문서 필드 구분 기호에 따라 당신은 하나의 문자 필드 구분 기호를 가지고 데이터를 변경할 필요가 CHAR

row_format 
    : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char] 
     [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] 
     [NULL DEFINED AS char] -- (Note: Available in Hive 0.13 and later) 

해야한다.

할 수 없다면 다른 방법은 단일 필드가있는 스테이지 테이블을 사용하는 것입니다. 해당 테이블에 데이터를로드 한 다음 실제 목표 테이블에서 단계 테이블의 열을 || 구분 기호로 분리 한 다음 삽입하십시오. 필드 수가 데이터에서 일관성이 있는지 확인해야합니다. 그렇지 않으면 최종 출력이 꺼집니다.

참조 : https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTableCreate/Drop/TruncateTable

관련 문제