hive(二)hive中的hql基本语句

目录

HIVE基本语法

数据库定义语言DDL

创建数据库

查看数据库信息:

通过指定路径创建数据库:

删除数据库:

创建表:

删除表:

查看表:

各方法举例:


HIVE基本语法

CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];

在对一个数据库以及表进行操作时,会有中文字符存在,所以需要先进入到mysql中将上述后续配置中修改字符集的操作执行完毕,将字符集全部改为utf8,防止中文字符无法显示。

也可以通过Navicat连接到mysql,进入到其中的hive数据库中,找到对应的表,右击设计表,将其中对应的字段的字符集改为utf8即可

数据库定义语言DDL

创建数据库

简单创建一个数据库命令:

格式1:

CREATE DATABASE [IF NOT EXISTS] 数据库名称

表示创建一个数据库,当该数据库不存在的时候创建,若存在则不创建,也可以省略该判断条件

格式2:

CREATE DATABASE [IF NOT EXISTS] database_name COMMENT "数据库注释"

表示在创建一个数据库时加入一个该数据库的注释

举例:创建一个简单的数据库my_database

加入注释创建:

查看数据库信息:

格式:

show databases;查看当前所有数据库

desc database 数据库名称

举例:查看刚加入注释创建的数据库my_database 的信息

  通过查看信息可以发现该数据库的默认存放位置在hdfs上的warehouse目录下

在hdfs上创建另一个目录testDatabase

查看数据库信息的第二种格式:查看数据库详细信息,包括所配置的参数

desc database extended 数据库名称;

通过指定路径创建数据库:

将创建的数据库存放到hdfs中的testDatabase中:

格式:

CREATE DATABASE [IF NOT EXISTS] database_name COMMENT "数据库注释" LOCATION "指定路径";

举例:

查看数据库信息:

在创建数据库时还可以增加一些配置信息 :

格式:

CREATE DATABASE IF NOT EXISTS test_database2 COMMENT "测试数据库创建" WITH DBPROPERTIES("author"="作者","application"="库中所包含信息");

删除数据库:

使用格式1:

DROP DATABASE 数据库名称;

举例:

删除会报错:message:Database my_database is not empty.

 格式2:慎用

DROP DATABASE 数据库名称 cascade;

强制删除数据库,无论其中是否为空

创建表:

创建表中有很多创建方法:

ROW FORMAT:定义创建表时表中数据的分隔符号,若表中数据与分隔符不匹配则原始数据中的所有不匹配的数据会变成新表中的一列数据,hive中默认以制表符进行分隔

LOCATION:创建表时将表存储到指定路径下

EXTERNAL:表示创建表时,以外部表的形式创建

STORED AS:用于设置数据存储格式

TBLPROPERTIES:设置配置信息

PARTITIONED BY:构建分区表,包括列名 数据类型 注释信息

删除表:

格式:

DROP TABLE 表名;

当删除表时,hdfs上对应的该表的数据内容也会被删除

查看表:

查看表的字段信息:desc 表名;

查看表的详细信息:DESC FORMATTED 表名;

各方法举例:

ROW FORMAT

这里设置分隔符号为制表符,数据存储格式为TextFile,指定存储路径到hdfs中的/testDatabase/total_score中。

使用本地文件加载表数据内容:

load data local inpath "/usr/local/soft/hive-3.1.2/data/total_score.txt" into table filetest.total_score1;

 查询表内容十行:

EXTERNAL:

若想要在删除表时,使得hdfs上对应的数据内容不被删除,仅仅删除表,可以创建一个外部表

创建一个外部表:        

其余条件不变,加入一个EXTERNAL即可:

此时由于hdfs上的数据内容还未做删除操作,而该表的指定存储路径同之前的表的存储路径相同,所以创建该表后,该表自动加载其指定路径中的数据内容,不需要再重新加载数据内容。

直接查询就可以得到数据:

外部表与普通内部表的区别:外部表删除表时不会删除对应的数据 并且和表数据存储位置无关

即当不指定数据内容存储路径时,所加载的数据内容会自动存储到默认路径中,当删除该表时,该数据内容仍然存在

STORED AS:

注意:以上创建表格式中指定存储格式为文本格式,若存储格式变为压缩格式ORC等,那么就不能直接将文本数据加载到表中

需要使用以下方式:

创建一个存储格式为ORC的表:

使用插入查询数据的方式加载数据内容: 

INSERT INTO TABLE filetest.total_score3 SELECT * FROM filetest.total_score1;

查看:

另一种格式:使用查询语句创建一个新表:

 查看:前五行 

TBLPROPERTIES:

在创建表时加入一些配置信息

使用查看表的详细信息查看:其中application栏中可以看到配置信息:

PARTITIONED BY:

以指定字段分区保存数据

需求:将学生信息表中不同性别的学生进行分区保存

所设置的分区字段是一个单独字段:

查看字段信息:

 

  查看数据:

基于hadoop的Hive数据仓库JavaAPI简单调用的实例,关于Hive的简介在此不赘述。hive提供了三种用户接口:CLI,JDBC/ODBC和 WebUI CLI,即Shell命令行 JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似 WebGUI是通过浏览器访问 Hive 本文主要介绍的就是第种用户接口,直接进入正题。 1、Hive 安装: 1)hive的安装请参考网上的相关文章,测试时只在hadoop一个节点上安装hive即可。 2)测试数据data文件'\t'分隔: 1 zhangsan 2 lisi 3 wangwu 3)将测试数据data上传到linux目录下,我放置在:/home/hadoop01/data 2、在使用 JDBC 开发 Hive 程序时, 必须首先开启 Hive 的远程服务接口。使用下面命令进行开启: Java代码 收藏代码 hive --service hiveserver >/dev/null 2>/dev/null & 我们可以通过CLI、Client、Web UI等Hive提供的用户接口来和Hive通信,但这三种方式最常用的是CLI;Client 是Hive的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出Hive Server所在节点,并且在该节点启动 Hive Server。 WUI 是通过浏览器访问 Hive。今天我们来谈谈怎么通过HiveServer来操作Hive。   Hive提供了jdbc驱动,使得我们可以用Java代码来连接Hive并进行一些类关系型数据库的sql语句查询等操作。同关系型数据库一样,我们也需要将Hive的服务打开;在Hive 0.11.0版本之前,只有HiveServer服务可用,你得在程序操作Hive之前,必须在Hive安装的服务器上打开HiveServer服务,如下: 1 [wyp@localhost/home/q/hive-0.11.0]$ bin/hive --service hiveserver -p10002 2 Starting Hive Thrift Server 上面代表你已经成功的在端口为10002(默认的端口是10000)启动了hiveserver服务。这时候,你就可以通过Java代码来连接hiveserver,代码如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值