2013-12-20 1 views
0

그래서 난 그냥 데이터는 하이브 파일에서 테이블로 전송되지

는 여기

내가 할 무엇, HIVE 함께 시작입니다 -> HDFS에 파일을로드 :

하둡 FS 저것 집어 넣어 purchases.txt

-> 테이블 만들기 :

을 '/purchases.txt'TEXTFILE의 LOCATION 저장 0

또는

표 P1 (트랜잭션 STRING)를 만들고;

-> 테이블보기 :

쇼 테이블;

이 시점에서 테이블 p1이 생성되었음을 나타냅니다.

->보기 내용

select * from p1

그냥 출력

OK 
Time taken: 0.175 seconds 

편집 :

데이터는이 형식으로 저장됩니다

일 '\ 티 '시간'\ t '상점'\ t '항목'\ t '비용

저는 전체 줄을 하나의 문자열로 받아들이고 싶기 때문에 하나의 문자열 열만 지정했습니다.

답변

0

당신은 데이터가 테이블에 채울 볼 수있을 것이다 다음 쿼리를 사용하십시오 :

create external table p1 (
    transaction String 
) 
location '/purchases.txt'; 

참고 : 당신이 테이블에 테이블 작성 및 데이터를로드 할 수있는 여러 가지 다른 방법이 있습니다. 나는 여러분이 취한 접근법에 대한 해결책을 지정했습니다. 그들을 탐험 해보십시오.

궁금한 점이 있으면 알려주세요.

행복한 Hadooping !!!!!

+0

나는 이것을 시도했지만 데이터가 복사되지 않습니다. 도움이된다면 파일에 대한 정보를 추가하고 추가했습니다. –

2

하이브 테이블의 위치는 개별 파일이 아닌 디렉터리로 지정해야합니다. Hive는 그 디렉토리의 모든 파일을 읽습니다.예를 들어 :

hadoop fs -mkdir /p1 

이 디렉토리에 파일을 넣어 :

는 디렉토리 생성 하둡 세계

CREATE EXTERNAL TABLE p1(transaction STRING) 
STORED AS TEXTFILE 
LOCATION '/p1'; 

대부분의 도구 :

hadoop fs -put purchases.txt /p1 

를 하이브 테이블을 생성 개별 파일 대신 디렉토리에서 작동하는 경향이 있습니다. 그렇게하면 hadoop 자체가 얼마나 많은 파일을 읽고 쓸 수 있는지, 파일 이름은 무엇인지를 관리 할 수 ​​있습니다.

+0

원래 쿼리'hadoop fs -put purchases.txt'에 추가하면 HDFS의 루트가 아닌/user//폴더 아래에 저장됩니다. –

+0

나는 그것을 또한했다. 디렉토리 만 사용! 그러나 데이터는 여전히 ok 명령과 소요 시간 만 표시합니다. –

+0

감사합니다. @PraveenSripati! 하지만 어떻게 HDFS의 뿌리에 넣을 수 있습니까? HDFS에서 이동 한 후 구매라고하는 별도의 폴더로 옮겼습니다. 그리고 디렉토리를 지정합니다. 그러나 데이터는 테이블에 표시되지 않습니다. –

0

대신이 명령을 사용하십시오. 작동해야합니다 :

CREATE EXTERNAL TABLE p1(transaction STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' 
STORED AS TEXTFILE LOCATION '/p1' 
관련 문제