> 데이터 베이스 > MySQL 튜토리얼 > ApacheHive一点一点进步(3)–动态分区表操作

ApacheHive一点一点进步(3)–动态分区表操作

WBOY
풀어 주다: 2016-06-07 16:29:40
원래의
1009명이 탐색했습니다.

本次主要介绍一下 hive 中的语法。比如bucket的建立,查询表结果查询表分区。 如何进行动态分区,同时在动态分区的过程中会遇到的问题解决。 以及在删除表及修改表结构的时候的语法,尤其是修改表结构,调整列顺序,这些语法是比较重要的。 BUCKET CREATE TA

本次主要介绍一下hive中的语法。比如bucket的建立,查询表结果查询表分区。

如何进行动态分区,同时在动态分区的过程中会遇到的问题解决。

以及在删除表及修改表结构的时候的语法,尤其是修改表结构,调整列顺序,这些语法是比较重要的。

BUCKET

CREATE TABLE page_view(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   #按照userid进行hash分组,同时按照viewTime排序ROW FORMAT DELIMITED FIELDS TERMINATED BY '1'    #文件分割使用1进行处理        OLLECTION ITEMS TERMINATED BY '2'    #数组分割使用2        MAP KEYS TERMINATED BY '3'            #map分割使用3STORED AS SEQUENCEFILE;</string></bigint>
로그인 후 복사

Browsing table and partitions

 SHOW TABLES; SHOW TABLES 'page.*'; SHOW PARTITIONS page_view; DESCRIBE page_view;    列举出表的列名称,类型,备注 DESCRIBE EXTENDED page_view; 列举出表的列及其他属性 DESCRIBE EXTENDED page_view PARTITION (ds='2008-08-08'); 列举出表的分区属性
로그인 후 복사

动态分区

FROM page_view_stg pvs    INSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country)           SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, NULL, NULL, pvs.ip, pvs.country注意的:hive.EXEC.MAX.dynamic.partitions.pernode(DEFAULT VALUE being 100) 每个mapper或者reducer任务最大创建分区个数。hive.EXEC.MAX.dynamic.partitions (DEFAULT VALUE being 1000) 一个DML创建的最大分区数量。hive.EXEC.MAX.created.files (DEFAULT VALUE being 100000) 创建的最大文件数量。SET hive.EXEC.dynamic.partition.mode=nonstrict;SET hive.EXEC.dynamic.partition=TRUE;
로그인 후 복사

删除表或者分区

DROP TABLE pv_users;ALTER TABLE pv_users DROP PARTITION (ds='2008-08-08');
로그인 후 복사

修改表

ALTER TABLE old_table_name RENAME TO new_table_name;ALTER TABLE old_table_name REPLACE COLUMNS (col1 TYPE, ...);ALTER TABLE tab1 ADD COLUMNS (c1 INT COMMENT 'a new int column', c2 STRING DEFAULT 'def val');CREATE TABLE test_change (a INT, b INT, c INT);ALTER TABLE test_change CHANGE a a1 INT; 将 a 列的名字改为 a1.ALTER TABLE test_change CHANGE a a1 STRING AFTER b; 将 a 列的名字改为 a1,a 列的数据类型改为 string,并将它放置在列 b 之后。新的表结构为: b INT, a1 string, c INT.ALTER TABLE test_change CHANGE b b1 INT FIRST; 会将 b 列的名字修改为 b1, 并将它放在第一列。新表的结构为: b1 INT, a string, c INT.
로그인 후 복사
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿