MySQL是一種流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),而Hive是一個(gè)建立在Hadoop之上的數(shù)據(jù)倉庫解決方案。如果您正在使用Hive,您需要一個(gè)MySQL數(shù)據(jù)庫來存儲(chǔ)Hive的元數(shù)據(jù)。在本文中,我們將介紹如何在MySQL內(nèi)創(chuàng)建Hive數(shù)據(jù)庫。
CREATE DATABASE hive;
以上代碼將在MySQL中創(chuàng)建一個(gè)名為“hive”的數(shù)據(jù)庫。在此之后,我們需要?jiǎng)?chuàng)建三個(gè)表格:hive去重后的元數(shù)據(jù)表,目錄表和分區(qū)表。
USE hive; CREATE TABLE IF NOT EXISTS TBLS ( DB_ID INT, TBL_NAME STRING, CREATE_TIME INT, LAST_ACCESS_TIME INT, OWNER STRING, RETENTION INT, SD_ID INT, TBL_TYPE STRING, VIEW_EXPANDED_TEXT STRING, VIEW_ORIGINAL_TEXT STRING, LINK_TARGET_ID INT, IS_REPLACE_ON_COMMIT BOOLEAN ) COMMENT 'hive去重后的元數(shù)據(jù)表' ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = ',', 'field.delim' = '\t' ) STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'; CREATE TABLE IF NOT EXISTS `DBS` ( `DB_ID` int(11) NOT NULL, `DESC` varchar(4000) DEFAULT NULL, `DB_LOCATION_URI` varchar(4000) NOT NULL, `NAME` varchar(128) NOT NULL, `OWNER_NAME` varchar(767) NOT NULL, `OWNER_TYPE` varchar(10) DEFAULT NULL) COMMENT '目錄表'; CREATE TABLE IF NOT EXISTS `PARTITIONS` ( `PART_ID` int(11) NOT NULL, `CREATE_TIME` int(11) DEFAULT NULL, `LAST_ACCESS_TIME` int(11) DEFAULT NULL, `PART_NAME` varchar(767) NOT NULL, `SD_ID` int(11) NOT NULL, `TBL_ID` int(11) NOT NULL) COMMENT '分區(qū)表';
以上代碼將創(chuàng)建三個(gè)表格,分別對(duì)應(yīng)了Hive中三個(gè)重要的元數(shù)據(jù)對(duì)象:表格、目錄和分區(qū)。請(qǐng)注意,我們?cè)趧?chuàng)建表格時(shí)使用了不同的注釋,以便了解每個(gè)表格的作用。
最后,我們將為Hive用戶創(chuàng)建一個(gè)MySQL用戶帳戶。這個(gè)帳戶將被用來將來向Hive數(shù)據(jù)庫中插入,更新和刪除元數(shù)據(jù)信息。
USE mysql; CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'password'; GRANT all privileges ON hive.* TO 'hiveuser'@'localhost'; FLUSH PRIVILEGES;
以上代碼將創(chuàng)建一個(gè)名為“hiveuser”的MySQL帳戶,并授予這個(gè)帳戶訪問hive數(shù)據(jù)庫的全部權(quán)限。
在本文中,我們介紹了如何在MySQL中創(chuàng)建Hive數(shù)據(jù)庫、表格以及為Hive用戶創(chuàng)建MySQL用戶帳戶。你現(xiàn)在可以安全的使用Hive進(jìn)行管理數(shù)據(jù)倉庫了。