로그 파일이 HDFS에 있으며 값은 쉼표로 구분됩니다. 예를 들어 :파티션 테이블에서 하이브로드
2012-10-11 12:00,opened_browser,userid111,deviceid222
는 지금은 열이 "타임 스탬프", "행동"을 가지고 "의 DeviceID를" "용자 ID"에 의해 분할 된 테이블을 하이브이 파일을로드 할. Hive에게 테이블의 파티션으로 로그 파일의 마지막 두 컬럼을 가져 오도록 요청할 수 있습니까? 모든 예제 e.g. "hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');"
은 스크립트에서 파티션의 정의가 필요하지만 파티션을 HDFS 파일에서 자동으로 설정하고자합니다.
한 가지 해결 방법은 4 개의 열이 모두있는 중간 분할되지 않은 테이블을 만든 다음 파일에서 채우고 INSERT into first_table PARTITION (userid,deviceid) select from intermediate_table timestamp,action,userid,deviceid;
을 작성하는 것입니다.하지만 추가 작업은 2 개의 매우 유사한 테이블을 만들 것입니다. 중간 테이블로 외부 테이블.
감사합니다, 데니. 그것이 내가이 문제를 해결 한 방법입니다. 원시 파일을 가리키는 외부 테이블을 사용하고 그 파일의 데이터가 선택된 파티션으로 분할 된 테이블에 삽입됩니다. 이것은 이러한 경우의 유일한 해결책입니다. –
멋진 것들 - 다행, 다행?! –
예, 그것은 마법입니다 :) 나는 당신이 당신의 코멘트를 추가 할 때 동시에 그것을 풀었습니다. 어쩌면 당신은 다른 이슈로 저를 도울 수 있습니까? http://stackoverflow.com/questions/13240409/hadoop-eof-exception-after-map-step –