大数据

Hive的hiveserver2服务和DML操作

2019-12-20  本文已影响0人  Dcl_Snow

hiveserver2服务

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

Hadoop的配置文件

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

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

添加如下配置内容:

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

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


hive服务01.png

Hive的配置文件

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

<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    <description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description>
</property>
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value/>
    <description>Bind host on which to run the HiveServer2 Thrift service.</description>
</property>

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...)];

实际操作

此处还是使用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

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

猜你喜欢

热点阅读