수색…


통사론

  • CREATE [TEMPORARY] [EXTERNAL] TABLE [존재하지 않는 경우] [db_name.] table_name

    [col_name data_type [COMMENT col_comment], ...)] [CLISTTERED BY (col_name, col_name, ...) [정렬 된 col_comment] (주의 : Hive 0.10.0 이후 버전에서 사용 가능)] ON ((col_value, col_value, col_value, col_value, col_value, col_name, ...) ...), (col_value, col_value, ...), ...) [DORECTORIES로 저장 됨] [[ROW FORMAT row_format] [파일로 저장 됨] | STORED BY 'storage.handler.class.name'[SERDEPROPERTIES (...)]] [위치 hdfs_path] [TBLPROPERTIES (property_name = property_value, ...)]]
    [AS select_statement];

  • CREATE [TEMPORARY] [EXTERNAL] TABLE [존재하지 않는 경우] [db_name.] table_name LIKE existing_table_or_view_name [LOCATION hdfs_path];

  • data_type : primitive_type, array_type, map_type, struct_type, union_type

  • primitive_type : TINYINT, SMALLINT, INT, BIGINT, BOOLEAN, FLOAT, DOUBLE, STRING, BINARY, TIMESTAMP, DECIMAL, DECIMAL (정밀도, 스케일), DATE, VARCHAR, CHAR

  • array_type : ARRAY <데이터 유형>

  • map_type : MAP <primitive_type, data_type>

  • struct_type : STRUCT <col_name : data_type [코멘트 col_comment], ...>

  • union_type : UNIONTYPE <데이터 유형, 데이터 유형, ...>

  • row_format : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [char에 의해 종료 된 수집 항목] [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] [NULL DEFINED AS char]
    , SERDE serde_name [SERDEPROPERTIES 함께 (property_name = property_value, property_name = property_value, ...)]

  • file_format : : SEQUENCEFILE, TEXTFILE, RCFILE, ORC, PARQUET, AVRO, INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

  • CREATE (DATABASE | SCHEMA) [존재하지 않는 경우] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name = property_value, ...)]];

비고

HIVE에서 테이블과 데이터베이스로 작업 할 때. 아래의 점은 유용 할 수 있습니다.

  • use database;use database; 하여 데이터베이스를 전환 할 수 있습니다 use database; 명령
  • SELECT current_database() 사용하여 얻을 수있는 현재 작업중인 데이터베이스를 확인하려면
  • create table 문에 사용 된 DDL을 보려면 SHOW CREATE TABLE tablename
  • 표의 모든 열을 보려면 DESCRIBE tablename 을 사용하여 사용 된 위치 serde 및 DESCRIBE FORMATTED tablename 과 같은 확장 된 세부 사항을 표시하십시오. DESCRIBE는 DESC로 축약 될 수도 있습니다.

표 만들기

파티션이있는 관리되는 테이블을 만들고 시퀀스 파일로 저장합니다. 파일의 데이터 형식은 Ctrl-A (^A) 로 필드 구분되고 행으로 구분 된 것으로 가정합니다. 아래 표는 하이브 구성 파일 hive-site.xml 의 키 hive.metastore.warehouse.dir 에 대한 값으로 지정된 하이브웨어 하우스 디렉토리에 작성됩니다.

CREATE TABLE view
(time INT, 
id BIGINT,
url STRING, 
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE;

파티션이있는 외부 테이블을 만들고 시퀀스 파일로 저장합니다. 파일의 데이터 형식은 ctrl-A 로 필드 구분 및 개행으로 행 구분 된 것으로 가정합니다. 아래 표는 지정된 위치에 만들어지며 이미 데이터가있는 경우 편리합니다. 외부 테이블을 사용할 때의 이점 중 하나는 데이터를 삭제하지 않고 테이블을 삭제할 수 있다는 것입니다. 예를 들어 테이블을 만들고 스키마가 잘못되었다는 것을 알게되면 데이터를 신경 쓰지 않고 안전하게 테이블을 삭제하고 새 스키마로 다시 만들 수 있습니다. 다른 장점은 동일한 파일에 돼지와 같은 다른 도구를 사용하는 경우, 우리는 테이블을 삭제 한 후에도 계속 사용할 수 있습니다.

CREATE EXTERNAL TABLE view
(time INT, 
id BIGINT,
url STRING, 
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE
LOCATION '<hdfs_location>';

선택한 쿼리를 사용하여 테이블을 만들고 쿼리 결과를 채우면 이 문을 CTAS (Select Table As Select)라고 합니다.

CTAS에는 두 부분이 있으며, SELECT 부분은 HiveQL에서 지원하는 SELECT 문일 수 있습니다. CTAS의 CREATE 부분은 SELECT 부분에서 결과 스키마를 가져 와서 SerDe 및 저장 형식과 같은 다른 테이블 속성으로 대상 테이블을 만듭니다.

CTAS에는 다음과 같은 제한이 있습니다.

  • 목표 테이블은 파티션 된 테이블이 될 수 없습니다.
  • 목표 테이블은 외부 테이블이 될 수 없습니다.
  • 목표 테이블은 목록 버킷 테이블이 될 수 없습니다.
CREATE TABLE new_key_value_store
ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe"
STORED AS RCFile
AS
SELECT * FROM page_view
SORT BY url, add;

테이블 생성 :

LIKE 형식의 CREATE TABLE을 사용하면 데이터를 복사하지 않고 기존 테이블 정의를 정확하게 복사 할 수 있습니다. CTAS와는 달리, 아래의 명령문은 테이블 이름 이외의 모든 세부 사항에서 기존 테이블과 정확히 일치하는 정의를 가진 새 테이블을 작성합니다. 새 테이블에 행이 없습니다.

CREATE TABLE empty_page_views
LIKE page_views;

데이터베이스 생성

특정 위치에 데이터베이스 만들기. 웨어 하우스 디렉토리에 작성된 데이터베이스의 위치를 ​​지정하지 않으면.

CREATE DATABASE IF NOT EXISTS db_name 
COMMENT 'TEST DATABASE'
LOCATION /PATH/HDFS/DATABASE/;

하이브 ACID 테이블 생성.

하이브 0.14 버전 이후 ACID 테이블이 지원됩니다. 아래 표는 UPDATE / DELETE / INSERT를 지원합니다.

다음은 hive-site.xml에 필요한 구성 변경 사항입니다.

 hive.support.concurrency = true
 hive.enforce.bucketing = true
 hive.exec.dynamic.partition.mode = nonstrict
 hive.txn.manager =org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
 hive.compactor.initiator.on = true
 hive.compactor.worker.threads = 1

현재 orc 파일 만 지원되는 형식입니다.

테이블 작성 문.

 create table Sample_Table(
 col1 Int,
 col2 String,
 col3 String) 
 clustered by (col3) into 3 buckets 
 stored as orc 
 TBLPROPERTIES ('transactional'='true');

HIVE_HBASE 통합

Hive-Hbase 통합은 버전 이후부터 지원됩니다. 하이브 : 0.11.0 HBase : 0.94.2 하둡 : 0.20.2

CREATE TABLE hbase_hive
(id string,
 col1 string,
 col2 string,
 col3 int) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES 
("hbase.columns.mapping" = ":key,cf1:col1,cf1:col2,cf1:col3")
TBLPROPERTIES ("hbase.table.name" = "hive_hbase");

참고 : 첫 번째 열은 키 열이어야합니다.

기존 테이블 속성을 사용하여 테이블을 만듭니다.

CREATE TABLE new_table_name LIKE existing_table_name;


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow