Hive基本操作

1、开启hive

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;

exit:先隐性提交数据,再退出;

quit:不提交数据,退出;

3、Hive命令行的使用

[root@hadoop0001 bin]# hive --help --service cli

usage: hive
 -d,--define <key=value>          Variable subsitution to apply to hive
                                  commands. e.g. -d A=B or --define A=B

#定义一个变量值,这个变量可以在Hive交互Shell中引用,例如:-d A=B
 

  --database <databasename>     Specify the database to use

#进入Hive交互Shell时候指定数据库,默认进入default数据库


 -e <quoted-query-string>         SQL from command line

#命令行执行一段SQL语句


 -f <filename>                    SQL from files

#filename文件中保存HQL语句,执行其中的语句


 -H,--help                        Print help information

#显示帮助信息


    --hiveconf <property=value>   Use value for given property

#在命令行中设置Hive的运行时配置参数,优先级高于hive-site.xml,但低于Hive交互Shell中使用Set命令设置。


    --hivevar <key=value>         Variable subsitution to apply to hive
                                                commands. e.g. --hivevar A=B

#同:define
 -i <filename>                    Initialization 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 创建数据库

基本语法:

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';

 

4.2查询数据库

4.2.1 显示数据库

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 student1

4.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;

  • 1
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Hive是一个基于Hadoop数据仓库工具,用于进行大规模数据分析和查询。下面是Hive的一些基本操作命令: 1. 使用命令`show databases;`可以查看当前所有的数据库。 2. 使用命令`CREATE DATABASE park;`可以创建一个名为park的数据库。实际上,创建数据库相当于在Hadoop的HDFS文件系统中创建了一个目录节点,统一存在`/usr/hive/warehouse`目录下。 3. 使用命令`USE park;`可以进入park数据库。 4. 使用命令`show tables;`可以查看当前数据库下的所有表。 5. 使用命令`CREATE TABLE stu (id INT, name STRING);`可以创建一个名为stu的表,其中包含id和name两个字段。在Hive中,使用的是STRING类型来表示字符,而不是CHAR或VARCHAR类型。所创建的表实际上也是HDFS中的一个目录节点。默认情况下,所有在default数据库下创建的表都直接存在`/usr/hive/warehouse`目录下。 6. 使用命令`INSERT INTO TABLE stu VALUES (1, 'John');`可以向stu表中插入数据。HDFS不支持数据的修改和删除,但在Hive 2.0版本后开始支持数据的追加,可以使用`INSERT INTO`语句执行追加操作。Hive支持查询和行级别的插入,但不支持行级别的删除和修改。实际上,Hive的操作是通过执行MapReduce任务来完成的。插入数据后,我们可以在HDFS的stu目录下发现多了一个文件,其中存储了插入的数据。因此,可以得出结论:Hive存储的数据是通过HDFS的文件来存储的。 7. 使用命令`SELECT id FROM stu;`可以查询stu表中的数据,并只返回id字段的值。 需要注意的是,如果想在HDFS目录下自己创建一个分区,并在该分区下上传文件,需要执行一些额外的操作。首先,手动创建的分区在Hive中是无法使用的,因为原数据库中没有记录该分区的信息。要让自己创建的分区被识别,需要执行命令`ALTER TABLE book ADD PARTITION (category = 'jp') LOCATION '/user/hive/warehouse/park.db/book/category=jp';`。这条命令的作用是在原数据表book中创建对应的分区信息。另外,还可以使用命令`ALTER TABLE book****** 'nn');`来修改分区。 希望以上信息能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值