zoukankan      html  css  js  c++  java
  • 05-Hive数据操作

    写在前面的话:

    该系列博文是我学习《 Hive源码解析与开发实战》视频课程的一个笔记,或者说总结,暂时没有对视频中的操作去做验证,只是纯粹的学习记录。

    有兴趣看该视频的博友可以留言,我会共享出来,相互交流学习 ^.^。

    *********************************************************************************************************

    1、Hive执行命令方式:

      cli命令行的方式、jdbc的方式(就是通过java等代码执行命令)、hwi(web浏览的方式)、beeline(类似cli的方式,但底层走的是jdbc,是在客户端用shell来执行jdbc而不是代码,在使用这种方式之前也需要开启hiveserver这种服务,同时beeline允许不是在集群结点上就可以访问远程结点上的数据)。

      1.1、cli 方式:

      如果在使用前不知道这个命令如何使用,可以通过hive -help 和hive --help来进行查询。hive 后面接help是用来查询hive这个命令后面可以接那些参数也就是hive的用法。hive --help用来查询hive后面接-- 再接哪些参数。

      1、linux命令行中输入hive --service -help:  

           可以查询该命令的使用方法,后面可以接如下的参数:       

        

        比如:hive --service rcfilecat + rcfile文件路径。  

           2、输入hive -e “hql”:

         这种方式不用进入hive客户端。最常见用法是写到shell脚本里面去,在里面可以设置shell参数变量。

      3、输入hive -f filename:

        把sql语句写入到文件中,从文件里面读取执行sql语句。

      4、hive -i filename :

        初始化hive,比如需要加载一些自定义的jar包。

      5、hive -S +一些命令参数:

         加-S表示在执行一些命令的时候,有一些不重要的信息不用打印出来。注意是大写S。

      实验:

        

        结果显示:

        

            对比hive终端查询操作的结果,发现查询结果和上面执行方式查询的结果一致:

        

        但是前面的结果显示了很多和sql查询结果无关的信息在开头,我们如果想尽量少的显示前面那些信息,主要显示查询操作的信息,那么可以在该命令中加大写的S:

        

        另外和其它shell命令一样我们可以通过重定向把结果输出到一些文件里面:

        

        上面的结果为:

        

        然后在加上-V,看看结果如何:

        

        结果为:

        

        由上面可以看出,最终结果把执行的sql语句打印出来了。

        当不把结果打印到文件中时,也会把执行的sql语句打印出来:

        

        然后再使用加-f参数来执行sql文件的情况:

        

        文件内容为:

        

        执行结果为:

        

        再比如说输入下面的查询某个字段的命令,注意这个时候会执行mapreduce程序:

        

        结果为:

        

        另外-i参数,和-f类似,只不过它是通过执行文件里面的sql语句来加载一些自定义jar包从而初始化hive。

        以后比较常用的是用shell脚本来执行hive命令,接下来演示使用shell脚本来执行hive命令:

        shell脚本内容:

        

        然后执行脚本:

        

        最终执行的结果为:

        

        在脚本中可以定义一些shell变量,然后在查询语句中去引用该变量,这样灵活性比较高:

        

        或者修改脚本把查询结果插入到某个表里去:

        

        最后演示下list和source命令,这两个命令是在hive对话框也就是hive终端使用的命令:

        

        这里罗列了list的用法,该命令可以用来显示缓存中加载的jar包等,比如之前用add加载进来的自定义jar,就可以用list jar 来显示罗列:

        

        source命令是在hive对话框中去执行sql文件,和hive -f 类似,区别是source是在hive对话框中个,hive -f 是在linux 的shell中执行:

        

        也可以通过source执行一些包含初始化hive的命令文件,从而使在当前hive对话框中生效。

        注意:上面的执行hive命令的脚本必须放到集群的结点上去执行,这样才可以访问到hive数据。

        1.2、Hive变量:

          首先我们在hive对话框中可以通过set val=''的方式设置变量val的值,然后通过set val;的方式来显示该变量的值:

          

          然后我们在查询语句中通过${hiveconf:val}去使用它:

          

          然后查询结果显示:

          

          对比原始表中的数据:

          

           然后再演示下env的使用,这个命令可以显示当前的环境变量值:

           

                

    总结记忆:
    1、可以通过hive -help查询一些hive后面接的一些参数;
    2、通过hive --help命令查询hive后面接--参数的用法和意思;

    下面这些参数命令是通过hive -help查询出来的:
    3、hive -e "hql" 用来在linux终端中执行hql语句;
    3、hive -f filename 用来执行sql文件;
    4、hive -i filename 通过一个文件中的hive命令,初始化hvie
    5、hive -S +一些命令 可以将一些不重要的信息不打印出来,注意这里是大写的S;
    6、hive -e -v +查询语句 加-v可以把sql语句也打印出来

    另外可以把这些结果重定向到文件中。
    还可以写shell脚本文件,在里面写hive 命令,然后执行脚本就可以执行里面的hive命令了。

    7、在hive终端可以使用list命令来列出分布式缓存中的jar包等,比如当add jar /../test.jar
    之后,可以通过list jar;来罗列出缓存里面有那些jar包;
    8、source命令:这个是在hive终端中执行sql文件的命令,类似在shell终端中的hive -f filename;
    9、在hive终端中可以通过set来设置和显示变量的值,并且通过${hiveconfig:val}来引用该变量,比如:
    hive>set val=wer;
    hive>set val;
    hive>select * from testext where name='${hiveconfig:val}';

  • 相关阅读:
    2020牛客寒假算法基础集训营3
    2020牛客寒假算法基础集训营2
    2020牛客寒假算法基础集训营1
    Educational Codeforces Round 81 + Gym 102267
    博客迁移到自己的WordPress站上
    HDU 5172 GTY's gay friends 线段树 or Hash
    HDU 3436 Queue-jumpers Splay
    HDU 1890 Robotic Sort Splay
    POJ 3468 A Simple Problem with Integers Splay
    BZOJ 1503 郁闷的出纳员 Splay
  • 原文地址:https://www.cnblogs.com/lordcheng/p/7473366.html
Copyright © 2011-2022 走看看