복붙노트

[HADOOP] 파일에 하이브 쿼리 출력

HADOOP

파일에 하이브 쿼리 출력

나는 자바 코드로 하이브 쿼리를 실행한다. 예:

결과를 hdfs 파일로 내보내는 방법.

해결법

  1. ==============================

    1.다음 쿼리는 결과를 HDFS에 직접 삽입합니다.

    다음 쿼리는 결과를 HDFS에 직접 삽입합니다.

    INSERT OVERWRITE DIRECTORY '/path/to/output/dir' SELECT * FROM table WHERE id > 100;
    
  2. ==============================

    2.이 명령은 출력을 원하는 텍스트 파일로 리디렉션합니다.

    이 명령은 출력을 원하는 텍스트 파일로 리디렉션합니다.

    $hive -e "select * from table where id > 10" > ~/sample_output.txt
    
  3. ==============================

    3.그러면 탭으로 구분 된 파일에 결과가 디렉토리 아래에 배치됩니다.

    그러면 탭으로 구분 된 파일에 결과가 디렉토리 아래에 배치됩니다.

    INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/YourTableDir'
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '\t'
    STORED AS TEXTFILE
    SELECT * FROM table WHERE id > 100;
    
  4. ==============================

    4.@sarath 다른 테이블에서 다른 select * 명령을 실행하고 같은 파일에 쓰려면 파일을 덮어 쓰는 방법?

    @sarath 다른 테이블에서 다른 select * 명령을 실행하고 같은 파일에 쓰려면 파일을 덮어 쓰는 방법?

    OVERWRITE LOCAL DIRECTORY '/ home / training / mydata / outputs'를 삽입하십시오.     SELECT로 선택하고 총계로 계산합니다.     FROM (      선택은 expl (분해)로 분해      FROM (       스플릿 (단어, '')을 스플릿으로 선택       FROM wordcount      ) t2     ) t3     GROUP BY expl;

    이것은 sarath의 질문에 대한 예입니다.

    위의 내용은 로컬 디렉토리에있는 출력 파일에 저장된 워드 카운트 작업입니다 :)

  5. ==============================

    5.tnguyen80의 답변에 동의합니다. 검색어에 특정 문자열 값이있는 경우 큰 따옴표로 묶인 전체 검색어를 사용하는 것이 좋습니다.

    tnguyen80의 답변에 동의합니다. 검색어에 특정 문자열 값이있는 경우 큰 따옴표로 묶인 전체 검색어를 사용하는 것이 좋습니다.

    예 :

    $hive -e "select * from table where city = 'London' and id >=100" > /home/user/outputdirectory/city details.csv
    
  6. ==============================

    6.이상적인 방법은 "hive -e '대신"INSERT OVERWRITE DIRECTORY / pathtofile'select * from temp 여기서 id> 100 "을 사용하는 것입니다. * from ... '> /filepath.txt"

    이상적인 방법은 "hive -e '대신"INSERT OVERWRITE DIRECTORY / pathtofile'select * from temp 여기서 id> 100 "을 사용하는 것입니다. * from ... '> /filepath.txt"

  7. ==============================

    7.파일을 HDFS에 직접 저장하려면 다음 명령을 사용하십시오.

    파일을 HDFS에 직접 저장하려면 다음 명령을 사용하십시오.

    hive> insert overwrite  directory '/user/cloudera/Sample' row format delimited fields terminated by '\t' stored as textfile select * from table where id >100;
    

    그러면 내용이 HDFS의 / user / cloudera / Sample 폴더에 저장됩니다.

  8. ==============================

    8.하이브 명령 행 인터페이스에 다음 행을 입력하십시오.

    하이브 명령 행 인터페이스에 다음 행을 입력하십시오.

    '/ data / test'행 형식을 덮어 씁니다. '\ t'로 끝나는 구분 필드는 textfile select *로 저장됩니다. testViewQuery;

    testViewQuery - 특정보기

  9. ==============================

    9.예:

    예:

    '/ user / myName / projectA_additionaData /'에 쿼리 결과를 저장할 외부 테이블 만들기

    CREATE EXTERNAL TABLE additionaData
    (
         ID INT,
         latitude STRING,
         longitude STRING
    )
    COMMENT 'Additional Data gathered by joining of the identified cities with latitude and longitude data' 
    ROW FORMAT DELIMITED FIELDS
    TERMINATED BY ',' STORED AS TEXTFILE location '/user/myName/projectA_additionaData/';
    

    쿼리 결과를 임시 테이블에 제공

     insert into additionaData 
         Select T.ID, C.latitude, C.longitude 
         from TWITER  
         join CITY C on (T.location_name = C.location);
    

    임시 테이블 삭제

    drop table additionaData
    
  10. ==============================

    10.출력 디렉토리 및 출력 파일 형식 등을 설정하려면 다음을 수행하십시오.

    출력 디렉토리 및 출력 파일 형식 등을 설정하려면 다음을 수행하십시오.

    INSERT OVERWRITE [LOCAL] DIRECTORY directory1
    [ROW FORMAT row_format] [STORED AS file_format] 
    SELECT ... FROM ...
    

    예:

    INSERT OVERWRITE DIRECTORY '/path/to/output/dir'
    ROW FORMAT DELIMITED
    STORED AS PARQUET
    SELECT * FROM table WHERE id > 100;
    
  11. from https://stackoverflow.com/questions/14289846/hive-query-output-to-file by cc-by-sa and MIT license