hive必須依賴hadoop,因此先安裝hadoop,能夠參考hadoop安裝html
注意hive通常2.x.x就對應hadoop的2.y.y版本,3.x.x就須要hadoop的3.y.y版本。java
hive下載mysql
Hive下載數據庫
hive wikiapache
高版本的hive中沒有在windows下的運行的腳本,能夠在hive windows運行腳本下載,覆蓋對應的bin目錄就能夠了。windows
解壓:oop
HIVE_HOME目錄.net
hive配置文件目錄3d
Hive依賴Hadoop,記得配置HADOOP_HOME,由於啓動基本中會使用到,也能夠直接配置到hive-env.sh文件中,可是windows下不會使用這個配置文件,具體的能夠看一下運行時候腳本。
特別注意,若是遇到相似下面的錯誤:
java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.<init>(Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V
把%HADOOP_HOME%\share\hadoop\yarn\lib目錄下的disruptor包的版本替換爲hive的lib目錄下的disruptor的jar包。
在hive3.1.1和hadoop3.0.2就會出現上面的問題。
若是其餘問題,檢查包衝突,對比源碼,添加相應版本jar包,將hadoop依賴的jar包和hive依賴的jar替換爲可共用的版本。
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>hive的數據存儲目錄,指定的位置在hdfs上的目錄</description> </property> <property> <name>hive.exec.scratchdir</name> <value>/tmp/hive</value> <description>hive的臨時數據目錄,指定的位置在hdfs上的目錄</description> </property> <property> <name>hive.exec.local.scratchdir</name> <value>G:/datacenter/hivedata/iotmp</value> <description></description> </property> <property> <name>hive.downloaded.resources.dir</name> <value>G:/datacenter/hivedata/iotmp</value> <description></description> </property> <property> <name>hive.querylog.location</name> <value>G:/datacenter/hivedata/iotmp</value> <description></description> </property> <property> <name>hive.server2.logging.operation.log.location</name> <value>G:/datacenter/hivedata/logs</value> <description></description> </property> <!--mysql--> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <property> <name>datanucleus.autoCreateSchema</name> <value>true</value> </property> <property> <name>datanucleus.autoCreateTables</name> <value>true</value> </property> <property> <name>datanucleus.autoCreateColumns</name> <value>true</value> </property> <property> <name>hive.metastore.schema.verification</name> <value>false</value> <description/> </property> </configuration>
hive.metastore.warehouse.dir:hive數據存儲目錄 hive.exec.scratchdir:hive臨時數據目錄
元數據倉庫,默認使用Derby,能夠配置其餘數據庫,如MySQL javax.jdo.option.ConnectionURL:鏈接URL javax.jdo.option.ConnectionDriverName:驅動名稱 javax.jdo.option.ConnectionUserName:數據庫用戶名 javax.jdo.option.ConnectionPassword:數據庫密碼
確保hive配置中的目錄在hdfs中已經建立,而且有相應權限
hadoop fs -mkdir /user/ hadoop fs -mkdir /user/hive hadoop fs -mkdir /user/hive/warehouse hadoop fs -mkdir /tmp hadoop fs -mkdir /tmp/hive #讓所用人都又權限修改/tmp目錄 hadoop fs -chmod -R 777 /tmp
初始化hive存放元數據數據庫的表,記得先建立數據庫和給對應的用戶受權。
hive --service schematool -initSchema -dbType mysql
Hive元數據MySQL表
#建立數據庫 create shcema dbName #建立表 create table tableName # 查看某個數據庫 show databases # 進入某個數據庫 use dbName #查看全部表 show tables #查看錶結構 desc tableName #顯示錶名的分區 show partitions tableName # 建立一個表,結構與另外一個表同樣 create table tableNameOne like tableNameTwo # 建立外部表 create external table tableName # 分區表 create external table tableName (l int) partitoned by (d string) # 內外部錶轉化 alter table tableName set TBLPROPROTIES ('EXTERNAL'='TRUE') alter table tableName set TBLPROPROTIES ('EXTERNAL'='FALSE') #重命名錶 alter table tableName rename to newTableName # 增長字段 alter table tableName add columns (newCol int comment ‘新增’) # 修改字段 alter table tableName change colName newColName newType # 刪除字段 alter table tableName replace columns (col1 int,col2 string,col3 string) # 刪除表 drop table tableName # 刪除分區 alter table tableName drop if exists partitions (d='2019-01-01')
注意:刪除分區的時候,若是是外部表,則還須要刪除文件:
hadoop fs -rm -r -f path
注意建立數據庫是create schema,而不是create db