본문 바로가기
Hive

OpenCSVSerde

by heed159 2022. 5. 20.

하이브는 CSV 형식의 데이터를 하둡에서 읽을 수 있게 해주는 CSVSerde를 제공한다.

하이브를 설치하고 테스트해 볼 겸 OpenCSVSerde를 이용해서 테이블을 만들고 데이터 INSERT까지 해보려고 한다.

 

 

 

공공데이터 포털에서 가져온 데이터는 63만 건 정도 되었는데 간단한 테스트를 위해 5000건만 넣어보려고 한다.

 

데이터를 넣기 전에 항상 인코딩을 먼저 확인해야 한다. 그렇지 않으면 한글이 깨져 데이터를 읽을 수 없게 된다.

따라서 인코딩을 utf-8로 맞춰주자.

 

[root@node1 test]# file -bi electric_car_chargingstation.csv
text/plain; charset=iso-8859-1

[root@node1 test]# iconv -c -f euc-kr -t utf-8 electric_car_chargingstation.csv > electric_car_chargingstation2.csv
[root@node1 test]# file -bi electric_car_chargingstation2.csv
text/plain; charset=utf-8

 

 

INSERT 할 데이터 확인

//한국전력공사_서울시 전기차 충전소 충전량

[root@node1 test]# head electric_car_chargingstation2.csv
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,0.05,0,0,2021-01-01 2:06,2021-01-01 2:06
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,13.1,0,29,2021-01-02 14:58,2021-01-02 15:28
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,47.56,1,33,2021-01-02 20:57,2021-01-02 22:31
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,24.77,0,38,2021-01-04 12:12,2021-01-04 12:51
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,19.21,0,29,2021-01-04 22:51,2021-01-04 23:21
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,18.86,0,31,2021-01-05 14:32,2021-01-05 15:03
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,16.66,0,28,2021-01-07 16:04,2021-01-07 16:32
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,12.96,0,31,2021-01-07 10:36,2021-01-07 11:08
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,15.97,0,29,2021-01-07 15:25,2021-01-07 15:54
급속,영등포전력지사,서울특별시 영등포구 경인로 878,50,6.42,0,16,2021-01-07 17:13,2021-01-07 17:30
						.
						.
						.

 

 

 

먼저 테이블을 생성한다.

CREATE EXTERNAL TABLE csvserde_test (
charging_mode string,
charging_station_name string,
address string,
charger_capacity string,
charge_amount string,
filling string,
charge_start_time timestamp,
charge_end_time timestamp
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'escapeChar'='\\',
'quote'='"',
'seperatorChar'=',')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '/user/hive/csvserde_test';

 

  • escapeChar : 칼럼에 데이터를 입력할 때 파싱 하지 않고 무시
  • quoteChar : 칼럼의 값을 지정한 문자로 묶어줌
  • seperatorChar : 칼럼간의 구분자

 

아래와 같은 옵션을 주면 CSV 파일 내 첫 번째 행에 컬럼명이 있을 경우 헤더를 스킵할 수 있다.

TBLPROPERTIES (
	'skip.header.line.count'='1'
)

 

 

이제 테이블을 생성했으니 데이터를 하둡에 넣어보자.

[root@node1 test]# hdfs dfs -copyFromLocal electric_car_chargingstation2.csv /user/hive/csvserde_test

[root@node1 test]# hdfs dfs -ls /user/hive/csvserde_test
Found 1 items
-rw-r--r--   3 root hdfs     620154 2022-05-20 15:10 /user/hive/csvserde_test/electric_car_chargingstation2.csv

 

 

하이브에서 테이블을 조회하면 데이터가 나오는 것을 볼 수 있다.

select * from csvserde_test;

+------------------------------+--------------------------------------+------------------------+---------------------------------+------------------------------+------------------------+----------------------------------+--------------------------------+
| csvserde_test.charging_mode  | csvserde_test.charging_station_name  | csvserde_test.address  | csvserde_test.charger_capacity  | csvserde_test.charge_amount  | csvserde_test.filling  | csvserde_test.charge_start_time  | csvserde_test.charge_end_time  |
+------------------------------+--------------------------------------+------------------------+---------------------------------+------------------------------+------------------------+----------------------------------+--------------------------------+
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 0.05                         | 0                      | 0                                | 2021-01-01 2:06                |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 13.1                         | 0                      | 29                               | 2021-01-02 14:58               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 47.56                        | 1                      | 33                               | 2021-01-02 20:57               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 24.77                        | 0                      | 38                               | 2021-01-04 12:12               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 19.21                        | 0                      | 29                               | 2021-01-04 22:51               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 18.86                        | 0                      | 31                               | 2021-01-05 14:32               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 16.66                        | 0                      | 28                               | 2021-01-07 16:04               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 12.96                        | 0                      | 31                               | 2021-01-07 10:36               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 15.97                        | 0                      | 29                               | 2021-01-07 15:25               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 6.42                         | 0                      | 16                               | 2021-01-07 17:13               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 6.92                         | 0                      | 14                               | 2021-01-12 9:34                |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 23.89                        | 0                      | 37                               | 2021-01-12 16:12               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 17.18                        | 0                      | 29                               | 2021-01-13 9:02                |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 3.91                         | 0                      | 9                                | 2021-01-13 13:03               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 13.21                        | 0                      | 23                               | 2021-01-13 12:38               |
| 급속                           | 영등포전력지사                              | 서울특별시 영등포구 경인로 878     | 50                              | 1.42                         | 0                      | 3                                | 2021-01-13 13:15               |

'Hive' 카테고리의 다른 글

Hive Partition  (0) 2022.05.26
[Hive] Hive 3버전 특징  (0) 2022.04.19
[Hive] Managed Table과 External Table  (0) 2022.04.19
[Hive]HiveServer2 와 Beeline  (0) 2022.03.16
[Hive] Hive 3.1.2 설치 (CentOS7, metastore - PostgreSQL)  (0) 2022.03.16