복붙노트

[HADOOP] HDFS에서 CSV를 읽는 HIVE에 테이블을 만들 수 없습니다.

HADOOP

HDFS에서 CSV를 읽는 HIVE에 테이블을 만들 수 없습니다.

HDFS에서 .csv 파일을 읽음으로써 하이브에 테이블을 만드는 동안 문제가 있습니다. 쿼리는 다음과 같습니다.

CREATE EXTERNAL TABLE testmail (memberId String , email String, sentdate String,actiontype String, actiondate String, campaignid String,campaignname String)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
LOCATION '/user/hadoop/cloudera/ameeth/ca_email.csv';

점점 오류가 발생했습니다. 메타 데이터 오류 :

어느 누구도이 일에서 나를 도울 수 있습니까? 사실 나는 이러한 문을 .sql 파일에서 작업으로 실행하려고합니다.

해결법

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

    1.Hive는 LOCATION에 지정한 디렉토리의 모든 파일을 선택합니다. 파일 이름을 지정할 필요가 없습니다.

    Hive는 LOCATION에 지정한 디렉토리의 모든 파일을 선택합니다. 파일 이름을 지정할 필요가 없습니다.

    이것은 작동해야합니다 :

    CREATE EXTERNAL TABLE testmail (memberId String , email String, sentdate String,actiontype String, actiondate String, campaignid String,campaignname String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/user/hadoop/cloudera/ameeth';
    
  2. ==============================

    2.이 길로 가라.

    이 길로 가라.

    cloudera에서 metastore_db 폴더를 찾으십시오. * .lck 파일을 제거합니다.

    명령 sudo rm /folder_path/metastore_db/*.lck

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

    3.HDFS에 디렉토리를 작성하고 ca_email.csv를이 디렉토리로 이동 한 후 해당 디렉토리를 CREATE EXTERNAL TABLE 명령의 LOCATION으로 지정하십시오.

    HDFS에 디렉토리를 작성하고 ca_email.csv를이 디렉토리로 이동 한 후 해당 디렉토리를 CREATE EXTERNAL TABLE 명령의 LOCATION으로 지정하십시오.

  4. ==============================

    4.나는 같은 문제가 있었다.

    나는 같은 문제가 있었다.

    csv 파일을 탭으로 구분 된 텍스트 파일로 변경하고 hdfs로 파일을 옮겨서 같은 파일을로드하여 하이브 테이블을 생성했습니다.

    hdfs에서 파일을보고 탭으로 데이터를 분리하여 하이브 테이블에로드했는지 확인하십시오

    CREATE TABLE TABLE1
    
    ( column1 string,
    
      column2 string,
    
    ....
    
    ROW FORMAT DELIMITTED FIELDS TERMINATED BY '\t';
    
    )LOAD DATA INPATH <hdfs location of tab delimitted txt file> OVERWRITE INTO TABLE TABLE1
    
  5. from https://stackoverflow.com/questions/25989187/unable-to-create-table-in-hive-reading-a-csv-from-hdfs by cc-by-sa and MIT license