下载网址: http://archive.cloudera.com/cdh5/cdh/5/
下载完后解压:tar xvf hive-1.1.0-cdh5.15.1.tar.gz
cd hive-1.1.0-cdh5.15.1/conf/
把hive-env.sh.template 复制为hive-env.sh
cp hive-env.sh.template hive-env.sh
修改hive-env.sh
HADOOP_HOME=/root/hadoop/app/hadoop-2.6.0-cdh5.15.1 export HIVE_CONF_DIR=/root/hadoop/app/hive-1.1.0-cdh5.15.1/conf
新增hive-site.xml
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.1.102:3306/immoc_hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <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.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> </configuration>
设置快捷方式 (vi ~/.bash_profile)
export HIVE_HOME=/root/hadoop/app/hive-1.1.0-cdh5.15.1 export PATH=$HIVE_HOME/bin:$PATH
source ~/.bash_profile (加载)
启动
hive
操作语句
显示数据库: show databeses; 新建数据库: CREATE DATABASE IF NOT EXISTS hive //默认的新增 新增自定义存储位置的数据库: CREATE DATABASE IF NOT EXISTS hive01 LOCATION ‘/test/location‘ 新增带有参数的数据库: CREATE DATABASE IF NOT EXISTS hive02 WITH DBPROPERTIES (‘name‘=‘zhangsan‘) 删除数据库(只能删除空库): drop database hive01 级联删除数据库(库的所有东西都删掉): drop database hive01 CASCADE; 进入数据库: use hive 查看详细信息:desc database hive0; 查看更详细的信息: desc database EXTENDED hive02;
设置: set hive.cli.print.current.db=true
数据库的存储方式:
CREATE TABLE emp( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t‘;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:An exception was thrown while adding/validating class(es) : Column length too big for column ‘PARAM_VALUE‘ (max = 16383); use BLOB or TEXT instead java.sql.SQLSyntaxErrorException: Column length too big for column ‘PARAM_VA
alter database hive character set latin1; flush privileges
表操作
查看表结构: desc emp; 详细表结构: desc extended emp; 详细表信息(有格式) desc formatted emp; 修改表: ALTER TABLE emp RENAME TO emp1;
数据管理
导入本地文件 LOAD DATA local inpath ‘/root/hadoop/app/emp.txt‘ INTO TABLE emp; 导入hdfs文件 LOAD DATA inpath ‘hdfs://hadoop000:8020/emp.txt‘ INTO TABLE emp; 导入本地文件(覆盖) LOAD DATA local inpath ‘/root/hadoop/app/emp.txt‘ OVERWRITE INTO TABLE emp; OVERWRITE 有:覆盖 没有:追加 创建emp表并且把结构和数据导过去: create table emp1 as select * from emp; 导出到本地路径 INSERT OVERWRITE LOCAL DIRECTORY ‘/tmp/hive1‘ ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t‘ select empno,ename,job,deptno from emp;
额外知识:
MANAGED_TABLE:内部表 删除表: HDFS上的数据被删除 & Meta也被删除 EXTERNAL_TABLE:外部表 删除表: 只有Meta被删除 我们默认创建的都是内部表 可以用desc formmat emp; 来查看
原文:https://www.cnblogs.com/dabenxiang/p/11717752.html