1.1 进入 hive/bin
[root@hadoop0001 bin]#cd /opt/software/apache-hive-1.2.1-bin/bin/
1.2执行 hive 命令,开启hive
[root@hadoop0001 bin]#hive
1.3若开启正常跳过,若报Cannot create directory /tmp/hive/root/533855bd-351b-4146-9227-10c16868ffd3. Name node is in safe mode.错误
完整错误如下
这个错误是由于开启hadoop集群是进入了安全模式
[root@hadoop0001 bin]# hadoop dfsadmin -safemode leave
退出安全模式后执行1.2 开启成功
2、退出hive窗口hive> exit;
或者
hive> quit;
3、Hive命令行的使用exit:先隐性提交数据,再退出;
quit:不提交数据,退出;
[root@hadoop0001 bin]# hive --help --service cli
usage: hive
-d,--defineVariable subsitution to apply to hive
commands. e.g. -d A=B or --define A=B#定义一个变量值,这个变量可以在Hive交互Shell中引用,例如:-d A=B
--database
Specify the database to use #进入Hive交互Shell时候指定数据库,默认进入default数据库
-eSQL from command line #命令行执行一段SQL语句
-fSQL from files #filename文件中保存HQL语句,执行其中的语句
-H,--help Print help information#显示帮助信息
--hiveconfUse value for given property #在命令行中设置Hive的运行时配置参数,优先级高于hive-site.xml,但低于Hive交互Shell中使用Set命令设置。
--hivevarVariable subsitution to apply to hive
commands. e.g. --hivevar A=B#同:define
-iInitialization SQL file #进入Hive交互Shell时候先执行filename中的HQL语句
-S,--silent Silent mode in interactive shell#静默模式,指定后不显示执行进度信息,最后只显示结果
-v,--verbose Verbose mode (echo executed SQL to the
console)#冗余模式,额外打印出执行的HQL语句
(2)显示数据库
hive> show databases;
(3)使用default数据库
hive> use default;
(4)显示default数据库中的表
hive> show tables;
(5)创建student表, 并声明文件分隔符’t’
hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't';
(6)加载/opt/student.txt 文件到student数据库表中。
hive> load data local inpath '/opt/student.txt' into table student;
(7)Hive查询结果
hive> select * from student;
OK
22 33
1001 hyt
1002 zhangsan
1003 lisi
Time taken: 0.408 seconds, Fetched: 4 row(s)
在执行插入数据等job任务出错:
Number of reduce tasks is set to 0 since there's no reduce operator
#翻译:由于没有减少 *** 作符,减少任务数被设置为0
若输入文件很小,但是分布式任务的生成的其他过程会消耗大量时间。
这样的情况,适合在本地模式下运行。
适合在本地模式的情况:
1.job的输入数据大小必须小于参数:hive.exec.mode.local.auto.inputbytes.max(默认128MB)
2.job的map数必须小于参数:hive.exec.mode.local.auto.tasks.max(默认4)
3.job的reduce数必须为0或者1
解决方案:配置参数
set hive.exec.mode.local.auto=true;
hive> set hive.exec.mode.local.auto=true;4、DDL数据定义 4.1 创建数据库
基本语法:
4.2查询数据库 4.2.1 显示数据库1、默认存储在/data/hive/warehouse文件夹下
create database 数据库名 ;
hive> create database student;
2、避免重复创建至错:
create database if not exist 数据库名 ;
hive> create database if not exists student;3、指定在HDFS中存放的位置(要指定数据库名)
create database if not exist 数据库名 location '/指定的目录' ;
hive> create database if not exists stude location '/hive.db';
1、查询数据库
基本语法:show databases;
hive> show databases;
2、模糊查询数据库
基本语法:show databases like '需查询的数据库名的部分*';
4.2.2查询数据库详情1.显示数据库信息
基本语法:desc database 数据库名;
hive> desc database stude;4.2.3切换数据库
基本语法:use 数据库名;
hive> use student14.3 修改数据库
SET DBPROPERTIES ('property_name'='property_value' [, ...]
为名为 property_name 的数据库指定一个或多个属性,并分别将每个属性的值设置为 property_value。如果 property_name 已存在,则会用 property_value 覆盖旧值。
hive> ALTER SCHEMA student1 > SET DBPROPERTIES ('creator'='HYT');4.4删除数据库
1.删除空数据库
drop database 数据库名
hive>drop database stude;2.如果删除的数据库不存在,最好采用 if exists判断数据库是否存在
drop database if exists 数据库名
hive> drop database stude; FAILED: SemanticException [Error 10072]: Database does not exist: stude hive> drop database if exists stude;3.如果数据库不为空,可以采用cascade命令,强制删除
drop database 数据库名 cascade;
hive> drop database stude; FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database stude is not empty. One or more tables exist.) hive> drop database stude cascade;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)