数据仓库: online alayze process。 在线分析处理
2,数据库, oltp online transaction process。 在线事物处理,
3. Hive的安装
a 安装jdk
b 安装Hive
c tar -xzvf apache-hive-2.3.2-bin.tar.gz,
给解压后的文件夹指定链接: ln -s apache-hive-2.3.2-bin hive
d 配置hive的环境变量
【/etc/profile】
1.HIVE_HOME 2. PATH 加入hive的bin目录
e hive关联hadoop配置
cd /opt/hive/conf
cp hive-env.sh.template hive-env.sh
export HADOOP_HOME=/opt/hadoop
f 安装Apache Derby 数据库(hive默认的数据库是derby, 可以更换为其他数据库, 可百度)
下载tar 文件db-derby-10.14.1.0-bin.tar.gz
tar -xzvf db-derby-10.14.1.0-bin.tar.gz
ln -s db-derby-10.14.1.0-bin.tar.gz derby
【/etc/profile】 文件配置derby_home 和 PATH 加入derby的bin目录
g 验证hive是否安装成功之前必须对metastore_db进行schema
cd $HIVE_HOME/bin
./schematool -dbType derby -initSchema
如果报错:
Initialization script hive-schema-2.3.0.derby.sql
Error: FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
*** schemaTool failed ***
解决方法:这个function的构建是数据库初始化的一部分,既然存在了,就直接去hive-schema-2.3.0-derby.sql里面注释掉。
h 这个问题解决后一般可以成功启动hive了, 在bin目录直接输入hive命令,然后验证数据库是否成功: show databases;
OK
default
Time taken: 15.734 seconds, Fetched: 1 row(s)
创建数据库
1. create database if not exists mybase; ---> show databases;
2. use mybase; show tables; --> mysql or hive
3. create table test(id int, name varchar(20),age int) comment 'test' row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile; //创建表 --->desc test; // 查看表描述
向表中插入数据
1. 从本地文件插入
load data local inpath '/opt/simple.txt'overwrite into table test; //插入数据使用load data
2. 数据来源于HDFS
加local表示从本地文件系统上传文件到HDFS系统,不加表示在HDFS中移动文件
配置hive的数据库为mysql
1.在/opt/hive/conf/hive-env.xml export HIVE_CONF_DIR=/opt/hive/conf
2. 修改mysql的数据源hive-site.xml
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://10.0.1.50:1300/test?useUnicode=true&characterEncoding=UTF-8</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
<property><name>javax.jdo.option.ConnectionPassword</name>
<value>root!@#</value>
<description>password to use against metastore database</description>
</property>
3. 把mysql驱动程序mysql-connector-java-5.1.26.jar放到$HIVE_HOME/lib 目录下。
类sql语言hiveSQL
1. desc database 【extended】 mybase;// extended可选参数, 查询更多扩展信息
2. alter database mybase set dbproperties ('create'='wrj'); //修改数据库属性
3. create table default.test0 like mybase.test; // 复制一个数据库表
4. desc formatted table_name; // 显示格式化后的表信息