[HADOOP] 하이브에 데이터를로드하는 동안 주변 인용 부호를 필드에서 제거하십시오.
HADOOP하이브에 데이터를로드하는 동안 주변 인용 부호를 필드에서 제거하십시오.
하이브에 입력 데이터가있는 테이블을로드하려고합니다. 다음 형식의 데이터가 있습니다.
"153662";"0002241447";"0"
"153662";"000647036X";"0"
"153662";"0020434901";"0"
"153662";"0020973403";"0"
"153662";"0028604202";"0"
"153662";"0030437512";"0"
이 데이터를 두 개의 varchar 열과 하나의 int 열로 테이블에로드하려고합니다. 그러나 주위의 큰 따옴표로 인해 문제가 발생합니다. 다음 표를 만들었습니다.
CREATE EXTERNAL TABLE Table(A varchar(50),B varchar(50),C varchar(50))
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\;'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
필드 주위의 따옴표는 아래에 표시된 것처럼 필드의 일부가됩니다.
"276725" "034545104X" "0"
"276726" "0155061224" "5"
나는 그들을 무시하고 싶다. 또한 세 번째 필드를 INT로 읽으 려합니다. 현재 테이블을 만드는 동안 INT로 세 번째 필드를 제공하면 NULL이됩니다.
해결법
-
==============================
1.이 경우 Csv-Serde를 사용해야합니다.
이 경우 Csv-Serde를 사용해야합니다.
CREATE TABLE Table(A varchar(50),B varchar(50),C varchar(50)) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = ";", "quoteChar" = "\"" ) STORED AS TEXTFILE;
-
==============================
2.이를 달성하는 여러 가지 방법 :
이를 달성하는 여러 가지 방법 :
from https://stackoverflow.com/questions/38617824/remove-surrounding-quotes-from-fields-while-loading-data-into-hive by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 조건에 일치하는 행 시퀀스에 대한 식별자를 생성하는 하이브 쿼리 (0) | 2019.07.20 |
---|---|
[HADOOP] 하이브를 사용하여 1000 개의 테이블 설명을 얻으려면 어떻게해야합니까? (0) | 2019.07.20 |
[HADOOP] 동적 리소스 할당을 사용하여 스파크 프로그램을 실행하는 방법 (0) | 2019.07.20 |
[HADOOP] sqoop merge-key : merge-key를 사용하지 않고 여러 개의 part 파일을 만드는 것. (0) | 2019.07.20 |
[HADOOP] HDFS 파일을 입력하고 출력 파일을 HDFS에 저장하는 매퍼 또는 감속기에서 외부 프로그램을 실행하는 방법은 무엇입니까? (0) | 2019.07.20 |