Hive的hiveserver2服务和DML操作

hiveserver2服务

前面都是使用Hive的命令行客户端,此处记录一下hiveserver2服务启动使用的方法。

Hadoop的配置文件

首先要修改Hadoop的配置文件:

# vim /usr/hadoop-2.7.7/etc/hadoop/core-site.xml

添加如下配置内容:


    hadoop.proxyuser.root.hosts
    *


    hadoop.proxyuser.root.groups
    *

并将该文件拷贝到Hadoop集群的所有节点的对应目录下:


hive服务01.png

Hive的配置文件

由于配置Hive时,配置文件hive-site.xml是复制的hive-default.xml.template,所以其中的内容有默认配置,主要是以下两项:


    hive.server2.thrift.port
    10000
    Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.


    hive.server2.thrift.bind.host
    
    Bind host on which to run the HiveServer2 Thrift service.

hive.server2.thrift.bind.host的value值,可以配置本机IP地址,也可以默认。

hiveserver2启动

在终端中数据如下命令,即可启动hiveserver2服务:

# hiveserver2
hive服务02.png

此处使用beeline进行连接服务,另开一个终端上执行如下命令:

# beeline
hive服务03.png

然后输入如下信息进行连接:

beeline> !connect jdbc:hive2://192.168.44.128:10000

用户名:root,密码:默认无,直接回车即可。


hive服务04.png

连接成功后,即可进行数据库操作:

0: jdbc:hive2://192.168.44.128:10000>show databases;
hive服务05.png

DML操作

DML(Data Manipulation Language:数据操纵语言)主要是实现对数据库的基本操作。

数据导入

装载数据(Load)

Load在前文的《Hive安装、配置和测试》中已经使用过,前文连接:https://www.jianshu.com/p/5c5d57dc2084。
语法:

hive> load data [local] inpath '/home/test.txt' into | overwrite table testhive.testtable [partition(partcol1=val1...)];
  • load data:加载数据。
  • local:表示从本地目录加载数据到hive表;不加local表示从HDFS加载数据到hive表。
  • inpath:加载数据的目录。
  • overwrite:覆盖表中已有数据,不加overwrite表示追加数据到表中。
  • into table:表示数据加载到哪张表。
  • testhive.testtable:表示数据加载到testhive库中的testtable表。
  • partition:表示加载数据到指定的分区中。

实际操作

此处还是使用Hive客户端进行操作。

  1. 创建表:
hive (default)> create table test(id int,name string,age int) row format delimited fields terminated by ' ' lines terminated by '\n';
  1. 创建数据文件:
    另打开一个终端,在home目录下创建test.txt文件:
# vim /home/test.txt

写入如下内容并保存:

1 Dcl_Snow 18
2 Dcl 19
3 Snow 20
hive服务06.png
  1. 从本地文件加载数据:
hive (default)> load data local inpath '/home/test.txt' into table default.test;
  1. 从HDFS中加载数据:
    上传本地文件到HDFS:
hive (default)> dfs -put /home/test.txt /tmp;

加载HDFS中的数据:

hive (default)> load data inpath '/tmp/test.txt' into table default.test;
  1. 覆盖数据加载:
    在HDFS中创建/test目录:
# hdfs dfs -mkdir /test
# hdfs dfs -ls /
hive服务07.png

上传本地文件到HDFS,上传前先在test.txt文件中增加一行内容:

4 DclSnow 21
hive服务08.png
hive (default)> dfs -put /home/test.txt /test;
hive服务9.png

加载HDFS中的数据覆盖表中原数据:

hive (default)> load data inpath '/test/test' overwrite into table default.test;
hive服务10.png
  1. 创建新表存储查询结果:
hive (default)> create table if not exists test1 as select id, name, age from test;
hive服务11.png

可以看到,是执行了MapReduce操作。

  1. export导出:
hive (default)> export table default.test to '/test/test';
hive服务12.png
  1. import导入:
hive (default)> import table test2 from '/test/test';
hive服务13.png
  1. insert导出:
    将查询结果导出到本地:
hive (default)> insert overwrite local directory '/home/test' select * from test;
hive服务14.png

hive服务15.png

hive服务16.png
  1. Hadoop命令导出到本地:
hive (default)> dfs -get /test/test /home/testha;
hive服务17.png

hive服务18.png
  1. Hive Shell命令导出到本地:
    在安装Hive的虚拟机终端下执行:
# hive -e 'select * from default.test;' >/home/testhi
hive服务19.png
  1. 清除表中数据:
hive (default)> truncate table test;

hive服务20.png


只能清除内部表(管理表)中的数据,不能清除外部表中的数据。

你可能感兴趣的:(Hive的hiveserver2服务和DML操作)