--- title: "Hive External Table로 CSV 파일 연동" slug: "hadoop-vpc-use-ex11" tags: ["cloud hadoop"] updated: 2026-08-20T09:03:19Z published: 2026-08-20T09:03:19Z canonical: "guide-gov.ncloud-docs.com/hadoop-vpc-use-ex11" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide-gov.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Hive External Table로 CSV 파일 연동
VPC 환경에서 이용 가능합니다.
Hive External Table은 Hive에서 테이블 생성 시 External 키워드로 생성하는 테이블입니다. Hive External Table은 `hive.metastore.warehouse.dir` 속성이 가리키는 디렉터리에 데이터를 저장하지 않으며, 테이블 생성 시 설정한 경로에 데이터를 저장합니다. 이미 Hadoop에 있는 데이터를 기반으로 테이블을 만들기 때문에 스키마만 정해주면 생성할 수 있습니다. :::(Info) (참고) [Hive 사용](/docs/chadoop-app1-vpc) 가이드에서도 Hive External Table에 관련된 예제를 볼 수 있습니다. ::: 이 가이드에서는 Object Storage에 보관한 csv 데이터를 Cloud Hadoop에서 제공하는 Hive의 External Table로 연동하여 사용하는 방법을 설명합니다. ## 샘플 데이터 준비 Hive External Table을 테스트하기 위한 샘플 데이터로 [기상자료개방포털](https://data.kma.go.kr){target="_blank"}에서 제공하는 기온 데이터를 다운로드해 주십시오. 샘플 데이터를 준비하는 방법은 다음과 같습니다. 1. [기상자료개방포털](https://data.kma.go.kr){target="_blank"}에 접속한 후 메인 페이지에서 **기후통계분석 > 통계분석 > 조건별통계**를 차례대로 클릭해 주십시오. 2. 검색 조건을 다음과 같이 설정한 후 **[검색]** 버튼을 클릭해 주십시오. * 분류 : 지상 * 지역/지점 : 서울 또는 부산 * 요소 : 기온 * 기간 : **일** 선택 후, `2011년 ~ 2021년`으로 설정 * 조건 : **월**과 **일**의 체크박스 체크 {height="" width="60%"} 3. 결과 그래프 우측 하단의 **[csv]** 버튼을 클릭해 .csv 파일을 다운로드해 주십시오. {height="" width="60%"} 4. 위 2~3단계를 반복하여 `서울`과 `부산` 지역의 각 기온 데이터를 다운로드해 주십시오. 5. 다운받은 csv 파일 내용을 확인해 주십시오. 맨 위에서 부터 헤더 내용이 12줄, 기온 데이터는 13번째 줄부터 시작함을 알 수 있습니다. {height="", width="80%"} :::(Info) (참고) 한글 문자 깨짐 현상은 인코딩을 변경하면 해결할 수 있습니다. 자세한 내용은 [Hive External Table 생성](#hive-external-table-생성)의 **한글 깨짐 현상**에 대한 참고 사항을 확인해 주십시오. ::: 6. 다음 명령어를 사용하여 다운받은 csv 파일에서 불필요한 헤더 부분을 제거하고 파일 이름을 변경해 주십시오. ``` $ sed 1,12d extremum_20211021101126.csv > data1.csv $ sed 1,12d extremum_20211020212220.csv > data2.csv ``` ## Obeject Storage에 데이터 업로드 Obeject Storage에 데이터를 업로드하는 방법은 다음과 같습니다. 1. Object Storage에 `live-test-bucket` 버킷을 생성해 주십시오. 2. 생성한 버킷에 `hivedata` 디렉터리를 생성한 후 그 안에 샘플 데이터(.csv) 파일을 업로드해 주십시오. {height="", width="80%"} :::(Info) (참고) 버킷 생성에 대한 자세한 내용은 [Obeject Storage 개요](/docs/storage-storage-6-1) 가이드를 참고해 주십시오. ::: ## Hive External Table 생성 Hive External Table을 생성하는 방법은 다음과 같습니다. 1. Cloud Hadoop 클러스터의 엣지 노드에 SSH로 접속해 주십시오. * 클러스터 노드에 SSH로 접속하는 방법에 대한 자세한 내용은 [SSH로 클러스터 노드 접속](/docs/hadoop-chadoop-3-2-vpc) 가이드를 참고해 주십시오. 2. 다음 명령어를 사용하여 Hive CLI를 실행해 주십시오. ``` $ hive ``` 3. Hive 클라이언트 명령어를 이용하여 External Table을 생성합니다. * `weather` 테이블이 생성되면 SELECT 쿼리를 수행하여 데이터를 확인할 수 있습니다. ``` CREATE EXTERNAL TABLE weather ( no STRING, area STRING, day STRING, avg FLOAT, max FLOAT, maxTime STRING, min FLOAT, minTime STRING, diff FLOAT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION 's3a://live-test-bucket/hivedata'; SELECT count(*) FROM weather; +-------+ | _c0 | +-------+ | 7913 | +-------+ SELECT * FROM weather WHERE day = '2011-01-01'; +-------------+---------------+--------------+--------------+--------------+------------------+--------------+------------------+---------------+ | weather.no | weather.area | weather.day | weather.avg | weather.max | weather.maxtime | weather.min | weather.mintime | weather.diff | +-------------+---------------+--------------+--------------+--------------+------------------+--------------+------------------+---------------+ | 159 | 부산 | 2011-01-01 | -1.1 | 4.1 | 14:55 | -5.8 | 06:40 | 9.9 | | 108 | 서울 | 2011-01-01 | -6.8 | -2.9 | 14:57 | -10.4 | 01:54 | 7.5 | +-------------+---------------+--------------+--------------+--------------+------------------+--------------+------------------+---------------+ ``` :::(Info) (참고) **한글 문자 깨짐 현상** 한글 문자가 깨지는 현상은 기상청에서 제공되는 데이터가 `utf-8`이 아닌 `euc-kr`로 제공되어 발생한 현상입니다. 아래와 같이 Hive External Table의 인코딩을 `euc-kr`로 변경하면 한글이 바르게 표시됩니다. ::: ``` ALTER TABLE weather SET TBLPROPERTIES('serialization.encoding'='euc-kr'); SELECT * FROM weather WHERE day = '2011-01-01'; +-------------+---------------+--------------+--------------+--------------+------------------+--------------+------------------+---------------+ | weather.no | weather.area | weather.day | weather.avg | weather.max | weather.maxtime | weather.min | weather.mintime | weather.diff | +-------------+---------------+--------------+--------------+--------------+------------------+--------------+------------------+---------------+ | 159 | 부산 | 2011-01-01 | -1.1 | 4.1 | 14:55 | -5.8 | 06:40 | 9.9 | | 108 | 서울 | 2011-01-01 | -6.8 | -2.9 | 14:57 | -10.4 | 01:54 | 7.5 | +-------------+---------------+--------------+--------------+--------------+------------------+--------------+------------------+---------------+ ``` ## Hive External Table 삭제 Hive External Table을 삭제하는 방법은 다음과 같습니다. 1. 생성된 Hive External Table 다음 명령어를 사용하여 삭제해 주십시오. * 아래는 앞서 생성한 Hive External Table(`weather`)을 삭제하는 예시입니다. ``` DROP TABLE weather; SELECT * FROM weahter; Error: Error while compiling statement: FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'weahter' (state=42S02,code=10001) ``` 2. 삭제된 테이블에 SELECT 쿼리를 수행해 주십시오. 에러가 발생하여 정상적으로 테이블이 삭제된 것을 확인할 수 있습니다. {height="", width="80%"} :::(Info) (참고) Hive External 테이블이 삭제되더라도 Object Storage의 .csv 파일은 삭제되지 않고 안전하게 보관됩니다. :::