Hive 퀵 스타트

LinuxBeginner
지금 연습하기

소개

본 실습은 Hive 의 설정 및 기본적인 운영에 초점을 맞추어, SQL 에 대한 기본적인 지식을 갖춘 학생들이 Hive 의 아키텍처, 기본적인 배포 및 사용법을 이해하도록 설계되었습니다.

문서에 있는 모든 예제 코드는 직접 입력하십시오. 가능한 한 코드를 복사하여 붙여넣지 마십시오. 이렇게 해야 코드에 더 익숙해질 수 있습니다. 문제가 발생하면 문서를 주의 깊게 검토하거나, 포럼에서 도움을 받거나 소통할 수 있습니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 57%입니다.학습자들로부터 88%의 긍정적인 리뷰율을 받았습니다.

Hive 소개

Apache Hive 는 SQL 과 유사한 쿼리를 사용하여 대규모 데이터 세트를 쿼리하고 분석하기 위해 Hadoop 위에 구축된 데이터 웨어하우스 소프트웨어 패키지입니다. 사용자에게 친숙한 SQL 인터페이스를 제공하여 데이터 집계, 임시 쿼리 및 빅 데이터 분석을 단순화합니다. 다음은 Hive 의 아키텍처 및 주요 기능에 대한 개요입니다.

Hive 아키텍처

  • 구성 요소 (Components): Hive 는 테이블 및 스토리지 관리를 위한 HCatalog와 MapReduce 작업, Pig 쿼리를 실행하거나 REST API 를 통해 Hive 메타데이터와 상호 작용하기 위한 WebHCat으로 구성됩니다.
  • 기능 (Features):
    • ETL, 데이터 분석 및 보고와 같은 데이터 웨어하우징 작업을 위한 SQL 쿼리를 지원합니다.
    • 데이터는 HDFS 또는 HBase 와 같은 스토리지 시스템에 저장되며, 쿼리 작업은 Tez, Spark 또는 MapReduce 와 같은 계산 엔진에 의해 실행됩니다.
    • 프로시저 언어, HPL-SQL 및 Hive LLAP, YARN 및 Slider 지원을 통한 하위 쿼리 검색을 지원합니다.

Hive 의 기본 데이터 단위

  • 데이터베이스 (Database): 이름 충돌을 방지하고 보안을 강화하기 위한 네임스페이스입니다.
  • 테이블 (Table): 동일한 스키마를 가진 동질적인 데이터 단위 (예: 타임스탬프, 사용자 ID, 페이지 URL 과 같은 열이 있는 page_views 테이블).
  • 파티션 (Partition): 효율적인 데이터 검색을 위해 키를 기반으로 데이터를 파티션으로 나눕니다.
  • 버킷 (Bucket): 쿼리 효율성을 향상시키기 위해 해시 함수 값을 기반으로 파티션된 데이터를 버킷으로 나눕니다.

Hive 데이터 유형

Hive 는 온라인 트랜잭션 처리 (OLTP) 보다는 데이터 웨어하우징 작업에 맞게 설계되었으며, 확장성, 성능, 안정성 및 내결함성에 중점을 둡니다. 다양한 입력 형식을 지원하며, 다른 형식의 커넥터로 확장할 수 있습니다. 빅 데이터 분석에서 Hive 의 기능을 활용하려면 Hive 의 아키텍처, 데이터 단위 및 데이터 유형을 이해하는 것이 필수적입니다.

Hive 설치 및 배포

이 섹션에서는 다운로드 및 디렉토리 설정, 환경 변수 설정, 메타베이스 구성 설정, Hive 시스템 매개변수 및 메타베이스 초기화에 대해 설명합니다.

먼저, 후속 작업을 수행하기 위해 hadoop 사용자로 전환해야 합니다. 데스크탑에서 Xfce 터미널을 두 번 클릭하여 열고 다음 명령을 입력합니다.

su - hadoop

: 비밀번호는 'hadoop' 사용자의 'hadoop'입니다.

그런 다음 wget 명령을 사용하여 Hive 의 최신 안정 버전을 다운로드합니다. 여기서는 Hive 버전 2.3.3 을 선택했습니다.

sudo wget https://labexfile.oss-us-west-1.aliyuncs.com/courses/144/apache-hive-2.3.3-bin.tar.gz

다음으로, 다운로드한 설치 패키지를 압축 해제해야 합니다. 터미널에 다음 명령을 입력합니다.

tar -zxvf apache-hive-2.3.3-bin.tar.gz

sudo 권한을 사용하여 압축 해제된 디렉토리를 /opt 디렉토리로 이동합니다. sudo 권한을 사용하지 않으면 /opt 디렉토리에 쓰기 권한이 없을 수 있습니다.

sudo mv /home/hadoop/apache-hive-2.3.3-bin /opt/hive-2.3.3

디렉토리를 이동한 후, Hive 의 디렉토리 소유자를 hadoop 사용자와 해당 사용자 그룹으로 변경해야 합니다. 터미널에 다음 명령을 입력하십시오.

sudo chown -R hadoop:hadoop /opt/hive-2.3.3

: 'sudo' 권한으로 위의 작업을 수행하기 위해 다른 터미널을 열 수 있습니다.

labex:~/ $ ls -al /opt/
total 24
drwxrwxr-x 10 hadoop hadoop 4096 Mar 3 12:01 hive-2.3.3
...

환경 변수 설정

디렉토리가 설정된 후, HIVE_HOME이 설치 디렉토리를 가리키도록 Hive 환경 변수를 설정해야 합니다.

먼저, vim 편집기를 사용하여 hadoop 사용자의 .bashrc 파일을 엽니다. 터미널에 다음 명령을 입력합니다.

vim /home/hadoop/.bashrc

파일 끝에 다음 내용을 추가합니다. PATH는 현재 실험 환경의 실제 상황에 따라 수정해야 합니다. $PATH 표현식은 기존 내용을 참조하는 데 사용됩니다. PATH 환경 변수의 끝에 :$HIVE_HOME/bin을 직접 추가합니다.

export HIVE_HOME=/opt/hive-2.3.3
export PATH=$PATH:$HIVE_HOME/bin

편집이 완료되면 파일을 저장하고 편집기를 종료합니다. 그런 다음 source 명령을 사용하여 위의 환경 변수를 활성화합니다.

이 랩에서는 Hive 가 미리 설치되어 있으므로 source 환경 변수가 필요하지 않습니다. 그러나 실제 설치에서는 이 단계를 상황에 따라 수행합니다.

구성 설정

이것은 Hive 구성 프로세스입니다. 이 단계에서는 랩에 Hive 가 미리 구성되어 있으므로 직접 실습 없이 보기만 할 수 있습니다. which hive 명령을 사용하여 확인할 수 있습니다. 하지만 파일 생성은 여전히 수행해야 합니다. 이는 테스트 통과 여부를 결정하는 자격 증명이기 때문입니다.

메타베이스 구성

Hive 를 공식적으로 사용하기 전에 메타데이터 저장소를 설정해야 합니다. 기본적으로 Hive 는 임베디드 Derby 데이터베이스에 메타 정보를 저장합니다. 디스크의 저장 위치는 Hive 구성 파일 conf/hive-default.xml의 구성 항목 javax.jdo.option.ConnectionURL에 의해 결정됩니다. 기본적으로 이 위치는 ./metastore_db입니다.

하지만 이 랩에서는 MySQL 을 메타데이터 저장소로 사용합니다. 따라서 Hive 구성 파일을 수정해야 합니다.

vim 편집기를 사용하여 이 구성 파일을 생성하고 엽니다.

vim /opt/hive-2.3.3/conf/hive-site.xml
<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/hive_metastore1?createDatabaseIfNotExist=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hiveuser1</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>123qweQWE...</value>
</property>
</configuration>

위의 구성 항목을 편집한 후 파일을 저장하고 편집기를 종료합니다.

MySQL 데이터베이스 생성

sudo mysql로 Mysql 서버를 시작하고 hive_metastore 데이터베이스를 생성합니다.

CREATE DATABASE hive_metastore1;
CREATE USER 'hiveuser1'@'localhost' IDENTIFIED BY '123qweQWE...';
GRANT ALL PRIVILEGES ON hive_metastore1.* TO 'hiveuser1'@'localhost';
FLUSH PRIVILEGES;
exit;

그런 다음 MySQL JDBC 드라이버를 다운로드하여 /opt/hive-2.3.3/lib 디렉토리에 복사합니다.

cp /usr/local/hive/lib/mysql-connector-j-8.3.0.jar /opt/hive-2.3.3/lib

Hive 시스템 매개변수 설정

메타베이스가 구성된 후, Hadoop 위치, 내부 구성 파일 경로 등을 식별하기 위해 Hive 내부 구성 항목을 설정해야 합니다.

가장 먼저 해야 할 일은 cp 명령을 사용하여 설정 템플릿을 복사하여 적용하는 것입니다.

터미널에 다음 명령을 입력하십시오.

cp /opt/hive-2.3.3/conf/hive-env.sh.template /opt/hive-2.3.3/conf/hive-env.sh

그런 다음 vim 편집기로 hive-env.sh 파일을 엽니다.

vim /opt/hive-2.3.3/conf/hive-env.sh

48 번째 줄에서 HADOOP_HOME을 Hadoop 설치 경로로 설정합니다.

HADOOP_HOME=/home/hadoop/hadoop

위의 구성 항목을 편집한 후 파일을 저장하고 편집기를 종료합니다.

메타베이스 초기화

모든 구성 작업이 완료되면 메타베이스 초기화를 시작할 수 있습니다.

나중에 사용할 데이터는 HDFS 에 저장되므로, 미리 HDFS 를 시작해야 합니다. 터미널에 다음 명령을 입력하여 HDFS 를 시작합니다.

start-dfs.sh
start-yarn.sh

jps를 입력하여 서비스 상태를 확인해야 합니다.

hadoop:~/ $ jps                                                      [17:31:43]
8960 Jps
3153 NodeManager
2823 SecondaryNameNode
3017 ResourceManager
2570 DataNode
2428 NameNode

Hadoop 을 처음 사용하는 경우, hdfs namenode -format을 사용하여 Hadoop 데이터를 삭제하고 초기화해야 합니다.

이 랩에서는 미리 설치된 Hive 를 위 데이터베이스로 초기화했습니다. 물론, 방금 다운로드한 Hive 를 초기화하려면 다음 명령을 사용하십시오.

/opt/hive-2.3.3/bin/schematool -initSchema -dbType mysql
Initialization script completed
schemaTool completed

여기서, 방금 다운로드한 Hive 를 처음 초기화하는 경우, '~/.bashrc'에서 HIVE_HOME 의 경로를 방금 설치한 Hive 의 경로로 변경하고 source해야 합니다. 제 조언은 그렇게 하지 않는 것입니다. 왜냐하면 Hive 에 대한 후속 테스트는 모두 미리 설치된 Hive 를 기반으로 하기 때문입니다!

프롬프트 메시지가 초기화가 완료되었음을 나타내면 hive 명령을 사용하여 명령줄에 들어갈 수 있습니다. 터미널에 다음 명령을 입력하십시오.

hive

: 미리 설치된 Hive 셸에 직접 hive를 입력하면 절대 경로를 추가하여 방금 설정한 Hive 셸에 들어갈 수 있습니다!

Hive Session ID = 3eee2693-175d-4452-82d2-47f1b639d9d5

Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-3.1.3.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Hive Session ID = 68d0d345-92c3-4eb1-8393-7ee34f56363f
hive>

Hive 기본 작업

다음으로 Hive 의 몇 가지 기본 작업을 배우겠습니다. 이 섹션에서 언급된 몇 가지 작업 문 외에도 모든 Hive 문은 Language Manual에서 찾을 수 있습니다. 이 섹션을 완료한 후 더 많은 문을 시도해 볼 수 있습니다.

테이블 생성

먼저 데이터를 얻어야 합니다. 이 실험 섹션에서 사용되는 데이터는 주로 NginX 서버를 시뮬레이션하는 로그 파일로, 웹사이트의 페이지 뷰를 분석하는 데 사용할 수 있습니다.

터미널을 다시 열고 터미널에 다음 명령을 입력하여 샘플 데이터를 다운로드합니다.

su hadoop
cd ~
wget http://labfile.oss-cn-hangzhou.aliyuncs.com/courses/567/log_example.csv

그런 다음 파일을 HDFS 에 업로드합니다.

hdfs dfs -mkdir -p /user/data/staging/page_view
hdfs dfs -put /home/hadoop/log_example.csv /user/data/staging/page_view

데이터를 얻은 후 가장 먼저 해야 할 일은 테이블을 만드는 것입니다. 위의 데이터에 대한 page_view 테이블을 만들려면 Hive 명령줄에서 다음 문을 입력해야 합니다.

CREATE TABLE page_view(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
STORED AS SEQUENCEFILE;

이 예제에서 테이블의 각 열에는 적절한 유형이 할당됩니다. 그리고 열 및 테이블 수준에서 주석을 추가할 수 있습니다. 또한 PARTITIONED BY 절은 데이터 열과 다른 파티션 열을 정의합니다. 파티션 열은 데이터 열과 함께 저장되지 않습니다. 이 방식으로 파티션 열을 지정하면 각 행에 대해 줄 바꿈 문자가 구분 기호로 사용됩니다.

데이터가 위의 형식과 일치하지 않는 경우, 다음 예제와 같이 필드 구분 기호를 매개변수화할 수 있습니다.

다음 문은 시연용으로만 사용되며 hive 셸에 입력할 필요가 없습니다.

CREATE TABLE page_view1(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '1'
STORED AS SEQUENCEFILE;

줄 구분 기호는 Hive 가 아닌 Hadoop 시스템의 구분 기호에 의해 결정되므로 줄 구분 기호를 수동으로 변경할 수 없습니다.

일반적으로 열 데이터가 결정되는 테이블은 버킷에 저장되어 데이터 세트 쿼리의 효율적인 샘플링을 용이하게 합니다. 버킷이 없으면 테이블의 임의 샘플링을 완료할 수 있더라도 전체 데이터를 스캔하는 과정에서 고효율 샘플링을 달성할 수 없습니다. 다음 예제는 userid 열에 대해 page_view 테이블에 대한 버킷 스토리지를 활성화하는 방법을 보여줍니다.

다음 문은 시연용으로만 사용되며 hive 셸에 입력할 필요가 없습니다.

CREATE TABLE page_view2(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '1'
COLLECTION ITEMS TERMINATED BY '2'
MAP KEYS TERMINATED BY '3'
STORED AS SEQUENCEFILE;

위의 예제에서 테이블의 userid 열은 해시 함수에 의해 32 개의 버킷으로 집계됩니다. 각 버킷에서 데이터는 viewTime의 오름차순으로 정렬됩니다. 이 데이터 구성 방법을 통해 사용자는 집계된 열 (여기서는 userid 열) 을 효과적으로 샘플링할 수 있으며, 정렬 기능을 통해 데이터 관리자는 더 나은 데이터 구조를 통해 쿼리를 보다 효율적으로 평가할 수 있습니다.

다음 문은 시연용으로만 사용되며 hive 셸에 입력할 필요가 없습니다.

CREATE TABLE page_view3(viewTime INT, userid BIGINT,
Page_url STRING, referrer_url STRING,
Friends ARRAY<BIGINT>, properties MAP<STRING, STRING>,
Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '1'
COLLECTION ITEMS TERMINATED BY '2'
MAP KEYS TERMINATED BY '3'
STORED AS SEQUENCEFILE;

위의 예제에서 테이블의 각 행 형식은 필드 이름과 유형으로 정의되며, 다른 프로그래밍 언어의 유형 정의와 매우 유사합니다. 테이블 이름과 열 이름은 대소문자를 구분하지 않습니다. IP Address of the User 및 아래의 COMMENT 문은 열 및 테이블 수준 모두에서 주석을 추가할 수 있음을 나타냅니다. 또한 PARTITIONED BY 절은 데이터 열과 다른 파티션 열을 정의합니다. 앞서 언급했듯이 실제로 데이터를 저장하지 않습니다. CLUSTERED BY 절은 몇 개의 버킷을 생성하는 데 사용할 열을 지정합니다. ROW FORMAT DELIMITED 절은 Hive 테이블에서 행을 저장하는 방법을 지정합니다. 구분된 형식의 경우, 이 문은 필드의 종료 기호를 결정하는 방법, 컬렉션 (배열 또는 맵) 의 항목에 대한 종료 기호를 결정하는 방법, 종료 맵 키를 결정하는 종료 기호를 지정하며, 여기서 숫자는 ASCII 인코딩입니다. STORED AS SEQUENCEFILE은 데이터가 HDFS 에 바이너리 형식 (특히 Hadoop 의 SequenceFile 유형) 으로 저장됨을 나타냅니다. 그 중 ROW FORMATSTORED AS 절의 설정은 Hive 가 현재 사용하고 있는 기본값입니다. 따라서 처음 테이블을 생성하는 문에서 명시적으로 작성하지 않았습니다.

테이블 및 파티션 찾아보기

웨어하우스에 있는 기존 테이블을 나열하려면 다음 문을 사용할 수 있습니다.

SHOW TABLES;

테이블이 많은 경우 위의 문은 많은 반환 정보를 생성합니다. 접두사를 지정하여 범위를 좁힐 수 있습니다. 예를 들어, page 접두사로 테이블을 나열하려면 다음 문을 사용할 수 있습니다.

SHOW TABLES 'page.*';

이 문의 일치 규칙은 정규 표현식 구문과 동일하며, 마침표 (.) 는 와일드카드를 나타냅니다.

테이블의 파티션을 나열하려면 다음 문을 사용합니다. 테이블이 파티션 테이블이 아닌 경우 정보가 반환되지 않습니다.

SHOW PARTITIONS page_view;

테이블의 열과 열 유형을 나열하려면 DESCRIBE 문을 사용합니다.

DESCRIBE page_view;

테이블의 열과 다른 모든 속성을 나열하려면 EXTENDED 키워드를 추가해야 합니다. 이렇게 하면 많은 정보가 인쇄되며, 일반적으로 디버깅에 사용됩니다.

DESCRIBE EXTENDED page_view;

테이블 수정

기존 테이블의 이름을 바꾸려면 RENAME TO와 함께 ALTER TABLE 문을 사용합니다. 새 이름의 테이블이 이미 있는 경우 오류가 반환됩니다.

ALTER TABLE page_view RENAME TO new_page_view;

결과 보기:

hive> ALTER TABLE page_view RENAME TO new_page_view;
OK
Time taken: 0.124 seconds
hive> show tables;
OK
new_page_view
...
Time taken: 0.021 seconds, Fetched: 4 row(s)

또한 기존 테이블의 열 이름을 바꿀 수 있습니다. 그러나 동일한 열 유형을 사용하고 기존 열 각각에 레코드를 포함해야 합니다.

ALTER TABLE new_page_view REPLACE COLUMNS (viewTime INT, userid BIGINT, page_url STRING, referrer_url STRING, ipaddr STRING COMMENT 'IP Address of the User');

또한 기존 테이블에 새 열을 추가할 수 있습니다.

ALTER TABLE new_page_view ADD COLUMNS (new_column INT COMMENT 'a new int column');

스키마 변경 (예: 열 추가) 은 테이블의 이전 파티션에 대한 스키마를 유지하여 파티션 테이블이 되는 것을 방지합니다. 이러한 열에 액세스하고 이전 파티션에서 실행되는 모든 쿼리는 암시적으로 null 값 또는 해당 열에 대해 지정된 기본값을 반환합니다.

테이블 및 파티션 삭제

Hive 는 데이터 웨어하우스로 설계되었으므로 데이터 삭제는 항상 부정적입니다. 따라서 테이블 삭제 작업은 약간 번거롭습니다. 테이블에 DROP 명령을 사용하면 테이블에 구축된 모든 인덱스가 암시적으로 삭제됩니다.

다음 명령을 사용하여 테이블을 삭제할 수 있습니다.

DROP TABLE new_page_view;

데이터 로딩 및 쿼리

Hive 에서 데이터 로드와 데이터 쿼리는 두 가지 다른 작업입니다. 이 문서에서는 Hive 테이블에 데이터를 로드하는 방법을 설명합니다.

데이터 로드

Hive 테이블에 데이터를 로드하는 방법에는 여러 가지가 있습니다. 사용자는 HDFS 의 특정 위치를 가리키는 외부 테이블을 만들 수 있습니다. 이 사용법에서 사용자는 HDFS 의 put 또는 copy 명령을 사용하여 데이터 파일을 지정된 위치로 복사하고 해당 위치를 가리키는 테이블을 만들 수 있습니다. 이 테이블에는 모든 관련 줄 형식 정보가 포함됩니다.

생성되면 사용자는 데이터를 변환하여 다른 Hive 테이블에 삽입할 수 있습니다. 처음부터 log_example.csv 파일을 HDFS 에 업로드하고 이름을 page_view로 변경했습니다. 해당 파티션의 page_view 테이블에 로드하려면 다음 명령을 사용할 수 있습니다.

먼저 외부 테이블을 만들고 지정된 파일과 연결합니다.

CREATE EXTERNAL TABLE page_view_stg(viewTime INT, userid BIGINT,
                Page_url STRING, referrer_url STRING,
                Ip STRING COMMENT 'IP Address of the User',
                Country STRING COMMENT 'country of origin')
COMMENT 'This is the staging page view table'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '44' LINES TERMINATED BY '\n' STORED AS TEXTFILE
LOCATION '/user/data/staging/page_view';

그런 다음 데이터의 최종 저장을 위해 page_view 테이블을 만듭니다.

CREATE TABLE page_view(viewTime INT, userid BIGINT,
                Page_url STRING, referrer_url STRING,
                Ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
STORED AS SEQUENCEFILE;

마지막으로 외부 테이블에서 page_view 테이블로 데이터를 삽입합니다.

FROM page_view_stg pvs
INSERT OVERWRITE TABLE page_view
PARTITION(dt='2015-05-17', country='us')
SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, pvs.ip
WHERE pvs.country = 'us';

데이터가 HDFS 에 로드된 다음 page_view 테이블에 로드되는 데 몇 분 정도 걸릴 수 있습니다.

...
Loading data to table default.page_view partition (dt=2015-05-17, country=us)
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 6.31 sec   HDFS Read: 369021 HDFS Write: 22943 SUCCESS
Total MapReduce CPU Time Spent: 6 seconds 310 msec
OK
Time taken: 25.304 seconds

간단한 쿼리

데이터를 삽입한 후 간단한 쿼리를 수행할 수 있습니다. 이는 일반적인 SQL 문과 유사합니다. Hive 명령줄 인터페이스에 다음 문을 입력합니다.

SELECT * FROM page_view WHERE userid = 0 LIMIT 10;

반환된 정보는 쿼리된 레코드입니다.

hive> select * from page_view;
OK
NULL 490 /downloads/product_1 /archives/webroot 217.168.17.5 2015-05-17 us
NULL 490 /downloads/product_2 /archives/webroot 217.168.17.5 2015-05-17 us
NULL 3316 /downloads/product_2 /archives/webroot 217.168.17.5 2015-05-17 us
...

서비스 종료

Hive 작업 문에 대해 더 자세히 알고 싶다면 다음 확장을 참조할 수 있습니다.

사용을 마쳤으면 quit 명령을 사용하여 Hive 명령줄 인터페이스를 종료할 수 있습니다.

quit;

물론, HDFS 서비스를 끄는 것을 잊지 마십시오. 터미널에 다음 명령을 입력합니다.

stop-yarn.sh
stop-dfs.sh

요약

이 세션에서는 Hive 의 아키텍처, 설치 및 배포, 그리고 기본적인 HQL 문을 소개했습니다. 또한, 샘플 데이터를 사용하여 데이터를 가져오는 방법을 배웠습니다.

언급된 주요 내용은 다음과 같습니다.

  • Hive 아키텍처
  • Hive 의 기본 데이터 단위
  • Hive 배포 방법
  • Hive HQL 언어

일반적으로 데이터 웨어하우스 소프트웨어 패키지인 Hive 의 기능은 더 탐구할 필요가 있습니다. 기술 자료를 적극적으로 검토하는 습관을 유지하고, 다음 강좌를 계속 학습하십시오.