美文网首页大数据
Hive的hiveserver2服务和DML操作

Hive的hiveserver2服务和DML操作

作者: Dcl_Snow | 来源:发表于2019-12-20 09:28 被阅读0次

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

        本文链接:https://www.haomeiwen.com/subject/kelxgctx.html