복붙노트

[HADOOP] Hadoop / Hive : 로컬 컴퓨터에서 .csv의 데이터로드

HADOOP

Hadoop / Hive : 로컬 컴퓨터에서 .csv의 데이터로드

이것은 초보자에게서 오는 것이므로 ...

Hadoop과 Hive를 설정 했으므로 AWS 클러스터의 데이터에 액세스하는 내 컴퓨터에서 Hive 쿼리를 실행할 수 있습니다. MS SQL Server와 마찬가지로 컴퓨터에 저장된 .csv 데이터로 하이브 쿼리를 실행할 수 있습니까?

.csv 데이터를 하이브에로드하려면 어떻게해야합니까? Hadoop과 어떤 관련이 있으며 어떤 모드로 실행해야합니까?

어떤 설정을 신경 써야합니까? 내가 잘못하면 언제든지 이전에 설정 한 설정을 손상시키지 않고 언제든지 돌아가서 Amazon에서 쿼리를 실행할 수 있습니다.

해결법

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

    1.다음과 같은 간단한 단계를 거치도록하겠습니다.

    다음과 같은 간단한 단계를 거치도록하겠습니다.

    단계 :

    먼저 csv 파일의 필드 이름을 사용하여 하이브에 테이블을 만듭니다. 예를 들어 csv 파일에 id, name, salary라는 세 개의 필드가 있고 "staff"라는 하이브에 테이블을 만들고 싶다고하자. 다음 코드를 사용하여 하이브에 테이블을 만듭니다.

    hive> CREATE TABLE Staff (id int, name string, salary double) row format delimited fields terminated by ',';
    

    둘째, 하이브에서 테이블을 만들었으므로 csv 파일의 데이터를 하이브의 "staff"테이블에로드하십시오.

    hive>  LOAD DATA LOCAL INPATH '/home/yourcsvfile.csv' OVERWRITE INTO TABLE Staff;
    

    마지막으로 "Staff"테이블의 내용을 하이브에 표시하여 데이터가 성공적으로로드되었는지 확인하십시오

    hive> SELECT * FROM Staff;
    

    감사.

  2. ==============================

    2.하이브 설정이있는 경우 hdfs / s3에서 Hive load 명령을 사용하여 직접 로컬 데이터 세트를 넣을 수 있습니다.

    하이브 설정이있는 경우 hdfs / s3에서 Hive load 명령을 사용하여 직접 로컬 데이터 세트를 넣을 수 있습니다.

    load 명령을 작성할 때 "Local"키워드를 사용해야합니다.

    거래 명령 구문

    LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
    

    자세한 내용은 아래 링크를 참조하십시오. https://cwiki.apache.org/confluence/display/Hive/LanguageManual%20DML#LanguageManualDML-Loadingfilesintotables

  3. ==============================

    3.이것을 가능하게하는 또 다른 방법이 있습니다.

    이것을 가능하게하는 또 다른 방법이 있습니다.

    CREATE EXTERNAL TABLE table name (foo INT, bar STRING)
     COMMENT 'from csv file'
     ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
     STORED AS TEXTFILE
     LOCATION '/path/filename';
    
  4. ==============================

    4.csv 파일 형식 데이터의 경우 아래 형식입니다.

    csv 파일 형식 데이터의 경우 아래 형식입니다.

    "column1", "column2","column3","column4"
    

    ','로 끝나는 필드를 사용하면 각 열은 아래와 같은 값을 갖게됩니다.

    "column1"    "column2"     "column3"     "column4"
    

    또한 열 값 중 하나라도 값으로 쉼표가 있으면 전혀 작동하지 않습니다.

    따라서 테이블을 만드는 올바른 방법은 OpenCSVSerde를 사용하는 것입니다.

    create table tableName (column1 datatype, column2 datatype , column3 datatype , column4 datatype)
    ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
    STORED AS TEXTFILE ;
    
  5. ==============================

    5.이것을 시도해 볼 수도 있습니다. 다음은 파일 생성 방법에 대한 몇 가지 예입니다. 도구 - https://sourceforge.net/projects/csvtohive/?source=directory

    이것을 시도해 볼 수도 있습니다. 다음은 파일 생성 방법에 대한 몇 가지 예입니다. 도구 - https://sourceforge.net/projects/csvtohive/?source=directory

  6. ==============================

    6.다음 경우에만 로컬 CSV 파일을 하이브에로드 할 수 있습니다.

    다음 경우에만 로컬 CSV 파일을 하이브에로드 할 수 있습니다.

  7. from https://stackoverflow.com/questions/19320611/hadoop-hive-loading-data-from-csv-on-a-local-machine by cc-by-sa and MIT license