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