[HADOOP] Hadoop / Hive : 로컬 컴퓨터에서 .csv의 데이터로드
HADOOPHadoop / Hive : 로컬 컴퓨터에서 .csv의 데이터로드
이것은 초보자에게서 오는 것이므로 ...
Hadoop과 Hive를 설정 했으므로 AWS 클러스터의 데이터에 액세스하는 내 컴퓨터에서 Hive 쿼리를 실행할 수 있습니다. MS SQL Server와 마찬가지로 컴퓨터에 저장된 .csv 데이터로 하이브 쿼리를 실행할 수 있습니까?
.csv 데이터를 하이브에로드하려면 어떻게해야합니까? Hadoop과 어떤 관련이 있으며 어떤 모드로 실행해야합니까?
어떤 설정을 신경 써야합니까? 내가 잘못하면 언제든지 이전에 설정 한 설정을 손상시키지 않고 언제든지 돌아가서 Amazon에서 쿼리를 실행할 수 있습니다.
해결법
-
==============================
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.하이브 설정이있는 경우 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.이것을 가능하게하는 또 다른 방법이 있습니다.
이것을 가능하게하는 또 다른 방법이 있습니다.
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.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.이것을 시도해 볼 수도 있습니다. 다음은 파일 생성 방법에 대한 몇 가지 예입니다. 도구 - https://sourceforge.net/projects/csvtohive/?source=directory
이것을 시도해 볼 수도 있습니다. 다음은 파일 생성 방법에 대한 몇 가지 예입니다. 도구 - https://sourceforge.net/projects/csvtohive/?source=directory
-
==============================
6.다음 경우에만 로컬 CSV 파일을 하이브에로드 할 수 있습니다.
다음 경우에만 로컬 CSV 파일을 하이브에로드 할 수 있습니다.
from https://stackoverflow.com/questions/19320611/hadoop-hive-loading-data-from-csv-on-a-local-machine by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Airflow에서 실패한 작업을 다시 시작하는 방법 (0) | 2019.06.14 |
---|---|
[HADOOP] JobConf를 사용하지 않고 Hadoop 작업 실행 (0) | 2019.06.14 |
[HADOOP] Hadoop이 String이나 Integer 대신에 Text 나 IntWritable 같은 클래스를 필요로하는 이유는 무엇입니까? (0) | 2019.06.13 |
[HADOOP] '지도 만'hadoop 작업을 작성하는 방법? (0) | 2019.06.13 |
[HADOOP] 돼지에서 여러 튜플로 튜플 분할하기 (0) | 2019.06.13 |