--****0.13.0 to 0.14.0****
--1. hive-7784 非必须
--hive-8715 这张表在0.13.1环境已经存在,升级过程只需要加一个索引
CREATE TABLE IF NOT EXISTS `PART_COL_STATS` (
`CS_ID` bigint(20) NOT NULL,
`DB_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`TABLE_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`PARTITION_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`COLUMN_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`COLUMN_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`PART_ID` bigint(20) NOT NULL,
`LONG_LOW_VALUE` bigint(20),
`LONG_HIGH_VALUE` bigint(20),
`DOUBLE_HIGH_VALUE` double(53,4),
`DOUBLE_LOW_VALUE` double(53,4),
`BIG_DECIMAL_LOW_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin,
`BIG_DECIMAL_HIGH_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin,
`NUM_NULLS` bigint(20) NOT NULL,
`NUM_DISTINCTS` bigint(20),
`AVG_COL_LEN` double(53,4),
`MAX_COL_LEN` bigint(20),
`NUM_TRUES` bigint(20),
`NUM_FALSES` bigint(20),
`LAST_ANALYZED` bigint(20) NOT NULL,
PRIMARY KEY (`CS_ID`),
CONSTRAINT `PART_COL_STATS_FK` FOREIGN KEY (`PART_ID`) REFERENCES `PARTITIONS` (`PART_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME) USING BTREE;
--****0.14.0 to 1.1.0****
--2. hive-9296 非必须修改
--Hcatalog Notification会使用到这张表,否则用不到。参考: https://issues.apache.org/jira/browse/HIVE-9174
--Hcatalog Notification的机制允许修改表和分区等事件广播,允许下游消费者来消费。具体请参考:
--https://cwiki.apache.org/confluence/display/Hive/HCatalog+Notification
CREATE TABLE IF NOT EXISTS `NOTIFICATION_LOG`
(
`NL_ID` BIGINT(20) NOT NULL,
`EVENT_ID` BIGINT(20) NOT NULL,
`EVENT_TIME` INT(11) NOT NULL,
`EVENT_TYPE` varchar(32) NOT NULL,
`DB_NAME` varchar(128),
`TBL_NAME` varchar(128),
`MESSAGE` mediumtext,
PRIMARY KEY (`NL_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--同上
CREATE TABLE IF NOT EXISTS `NOTIFICATION_SEQUENCE`
(
`NNI_ID` BIGINT(20) NOT NULL,
`NEXT_EVENT_ID` BIGINT(20) NOT NULL,
PRIMARY KEY (`NNI_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--****1.1.0 to 1.2.0****
--no op
--****1.2.0 to 2.0.0****
--3. hive-7018,非必须修改
--删除 TBLS表和PARTITIONS表上的LINK_TARGET_ID列:https://issues.apache.org/jira/browse/HIVE-7018
--Hive只有在0.10之前会用到这个列。之后版本,如果没有使用schemaTool建表(线上0.13.1就没有用到),这列没有被建出来,因而这列也不需要删除。另外,本身保留也没有副作用。
--脚本本身有是否含有列的判断,因此执行也没有副作用。
SELECT '< HIVE-7018 Remove Table and Partition tables column LINK_TARGET_ID from Mysql for other DBs do not have it >' AS ' ';
DELIMITER $$
DROP PROCEDURE IF EXISTS RM_TLBS_LINKID $$
DROP PROCEDURE IF EXISTS RM_PARTITIONS_LINKID $$
DROP PROCEDURE IF EXISTS RM_LINKID $$
/* Call this procedure to drop column LINK_TARGET_ID for TBLS */
CREATE PROCEDURE RM_TLBS_LINKID()
BEGIN
IF EXISTS (SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_NAME` = 'TBLS' AND `COLUMN_NAME` = 'LINK_TARGET_ID') THEN
ALTER TABLE `TBLS`
DROP FOREIGN KEY `TBLS_FK3`
;
ALTER TABLE `TBLS`
DROP KEY `TBLS_N51`
;
ALTER TABLE `TBLS`
DROP COLUMN `LINK_TARGET_ID`
;
END IF;
END $$x
/* Call this procedure to drop column LINK_TARGET_ID for PARTITIONS */
CREATE PROCEDURE RM_PARTITIONS_LINKID()
BEGIN
IF EXISTS (SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_NAME` = 'PARTITIONS' AND `COLUMN_NAME` = 'LINK_TARGET_ID') THEN
ALTER TABLE `PARTITIONS`
DROP FOREIGN KEY `PARTITIONS_FK3`
;
ALTER TABLE `PARTITIONS`
DROP KEY `PARTITIONS_N51`
;
ALTER TABLE `PARTITIONS`
DROP COLUMN `LINK_TARGET_ID`
;
END IF;
END $$
/*
* Check and drop column LINK_TARGET_ID
*/
CREATE PROCEDURE RM_LINKID()
BEGIN
call RM_PARTITIONS_LINKID();
call RM_TLBS_LINKID();
SELECT 'Completed remove LINK_TARGET_ID';
END $$
DELIMITER ;
CALL RM_LINKID();
--4. hive-11970 非必须修改。
--某些情况下一些列名称非常长,例如avro导出的列名,所以需要增加COLUMN_NAME的长度,从128增加到767
--参考:https://issues.apache.org/jira/browse/HIVE-11970
ALTER TABLE `COLUMNS_V2` MODIFY `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;
ALTER TABLE `PART_COL_PRIVS` MODIFY `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL;
ALTER TABLE `TBL_COL_PRIVS` MODIFY `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL;
ALTER TABLE `SORT_COLS` MODIFY `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL;
ALTER TABLE `TAB_COL_STATS` MODIFY `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;
ALTER TABLE `PART_COL_STATS` MODIFY `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;
--5. hive-12807 非必须修改。NOTICE:元数据升级时候可能报错,因为COMPACTION_QUEUE表可能未被创建
--当通过配置启用hive事务时候使用到,默认事务不启用。具体是增加字段记录事务序列中的一些信息。
--参考:https://issues.apache.org/jira/browse/HIVE-12352
ALTER TABLE `COMPACTION_QUEUE` ADD `CQ_HIGHEST_TXN_ID` bigint;
--6. hive-12814 非必须修改
--当通过配置启用hive事务时候使用到,默认事务不启用。具体是增加字段,记录compaction时候的一些统计信息。
--参考:https://issues.apache.org/jira/browse/HIVE-11444
ALTER TABLE `COMPACTION_QUEUE` ADD `CQ_META_INFO` varbinary(2048);
--7. hive-12816 非必须修改
--当通过配置启用hive事务时候使用到,默认事务不启用。具体是增加字段,保存compaction时候的MR作业id,防止metastore重启时候无法kill过期作业。
--参考:https://issues.apache.org/jira/browse/HIVE-11685
ALTER TABLE `COMPACTION_QUEUE` ADD `CQ_HADOOP_JOB_ID` varchar(32);
--8. hive-12818 非必须修改
--当通过配置启用hive事务时候使用到,默认事务不启用。
--参考:https://issues.apache.org/jira/browse/HIVE-12353
CREATE TABLE COMPLETED_COMPACTIONS (
CC_ID bigint PRIMARY KEY,
CC_DATABASE varchar(128) NOT NULL,
CC_TABLE varchar(128) NOT NULL,
CC_PARTITION varchar(767),
CC_STATE char(1) NOT NULL,
CC_TYPE char(1) NOT NULL,
CC_WORKER_ID varchar(128),
CC_START bigint,
CC_END bigint,
CC_RUN_AS varchar(128),
CC_HIGHEST_TXN_ID bigint,
CC_META_INFO varbinary(2048),
CC_HADOOP_JOB_ID varchar(32)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--9. hive-12819 非必须修改
--当通过配置启用hive事务时候使用到,默认事务不启用。具体是增加show transactions时候的输出信息。
--参考:https://issues.apache.org/jira/browse/HIVE-12353
ALTER TABLE `TXNS` ADD `TXN_AGENT_INFO` varchar(128);
--10. hive-12821 非必须修改
--当通过配置启用hive事务时候使用到,默认事务不启用。
--参考:https://issues.apache.org/jira/browse/HIVE-11965
ALTER TABLE `TXNS` ADD `TXN_HEARTBEAT_COUNT` int;
ALTER TABLE `HIVE_LOCKS` ADD `HL_HEARTBEAT_COUNT` int;
--11. hive-12822 非必须修改,同上
ALTER TABLE `TXNS` ADD `TXN_META_INFO` varchar(128);
--12. hive-12823 非必须修改,同上
ALTER TABLE `HIVE_LOCKS` ADD `HL_AGENT_INFO` varchar(128);
--13. hive-12831 非必须修改,同上
ALTER TABLE `HIVE_LOCKS` ADD `HL_BLOCKEDBY_EXT_ID` bigint;
ALTER TABLE `HIVE_LOCKS` ADD `HL_BLOCKEDBY_INT_ID` bigint;
--14. hive-12832 非必须修改,同上
CREATE TABLE AUX_TABLE (
MT_KEY1 varchar(128) NOT NULL,
MT_KEY2 bigint NOT NULL,
MT_COMMENT varchar(255),
PRIMARY KEY(MT_KEY1, MT_KEY2)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--****2.0.0 to 2.1.0****
--15. hive-13076 从代码上看不影响,但是涉及到建表和修改表操作,另外建议先打上补丁
--让hive支持表级别主键和外键,从而可以在CBO时候优化执行计划。目前完成了主键和外键的存储,CBO使用主键和外键功能还未开发完成。
--语法:CREATE TABLE vendor( vendor_id int, PRIMARY KEY (vendor_id) DISABLE NOVALIDATE RELY);
--CREATE TABLE product ( product_id int, product_vendor_id int, PRIMARY KEY (product_id) DISABLE NOVALIDATE, CONSTRAINT product_fk_1 FOREIGN KEY (product_vendor_id) REFERENCES vendor(vendor_id) DISABLE NOVALIDATE);
--参考:https://issues.apache.org/jira/browse/HIVE-13350
CREATE TABLE IF NOT EXISTS `KEY_CONSTRAINTS`
(
`CHILD_CD_ID` BIGINT,
`CHILD_INTEGER_IDX` INT(11),
`CHILD_TBL_ID` BIGINT,
`PARENT_CD_ID` BIGINT NOT NULL,
`PARENT_INTEGER_IDX` INT(11) NOT NULL,
`PARENT_TBL_ID` BIGINT NOT NULL,
`POSITION` BIGINT NOT NULL,
`CONSTRAINT_NAME` VARCHAR(400) NOT NULL,
`CONSTRAINT_TYPE` SMALLINT(6) NOT NULL,
`UPDATE_RULE` SMALLINT(6),
`DELETE_RULE` SMALLINT(6),
`ENABLE_VALIDATE_RELY` SMALLINT(6) NOT NULL,
PRIMARY KEY (`CONSTRAINT_NAME`, `POSITION`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE INDEX `CONSTRAINTS_PARENT_TABLE_ID_INDEX` ON KEY_CONSTRAINTS (`PARENT_TBL_ID`) USING BTREE;
--16. hive-13395 不必须修改
--当通过配置启用hive事务时候使用到,默认事务不启用。
--参考:https://issues.apache.org/jira/browse/HIVE-13395
CREATE TABLE WRITE_SET (
WS_DATABASE varchar(128) NOT NULL,
WS_TABLE varchar(128) NOT NULL,
WS_PARTITION varchar(767),
WS_TXNID bigint NOT NULL,
WS_COMMIT_ID bigint NOT NULL,
WS_OPERATION_TYPE char(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE TXN_COMPONENTS ADD TC_OPERATION_TYPE char(1);
--17. hive-13354 不必须修改
--当通过配置启用hive事务时候使用到,默认事务不启用。
ALTER TABLE COMPACTION_QUEUE ADD CQ_TBLPROPERTIES varchar(2048);
ALTER TABLE COMPLETED_COMPACTIONS ADD CC_TBLPROPERTIES varchar(2048);
Created
November 16, 2017 10:42
-
-
Save ericsahit/9622411305e42bf6735197fdec612794 to your computer and use it in GitHub Desktop.
从0.13开始的元数据Schema升级明细和影响分析
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment