美文网首页数据中台
分布式SQL查询引擎-Hive

分布式SQL查询引擎-Hive

作者: 中起之星 | 来源:发表于2018-10-18 11:41 被阅读23次

    分布式SQL查询引擎方面,了解到的有Hive、SparkSQL、Presto、Flink,可以说各有侧重,今天说一下Hive。

    为什么要用Hive

    大数据生态下,通过Hadoop MapReduce,实现将计算分割成多个处理单元,然后分散到一群家用或服务器级别的硬件上,从而降低成本并提供可伸缩性;这个计算模型下是HDFS,这是个“可插拔的“文件系统。不过,这里存在一个问题,就是用户如何从一个现有的数据基础架构转移到Hadoop上,而这个基础架构是基于关系型数据库和结构化查询语句(SQL)?
    这就是Hive出现的原因,Hive提供了被称为Hive查询语言的(或称为HiveQL或HQL)的SQL方言,来查询存储在Hadoop集群中的数据。Hive将大多数据的查询转换为MapRecue任务(job)。

    Hive安装

    Hive使用环境变量HADOOP_HOME来指定Hadoop的所有相关JAR和配置文件,因此在安装之前请确认下是否设置好了这个环境变量。
    cd~curl -o http://archive.apache.org/dis/hive/hive-0.9.0/hive-0.9.0-bin.tar.gz
    tar-xzfhive-0.9.0.tar.gzsudo mkdir-p /user/hive/warehouse
    $sudo chmod a+rwx /user/hive/warehouse

    可以定义HIVE_HOME环境变量
    sudo echo "export HIVE_HOME=PWD/hive-0.9.0">/etc/profile.d/hive.sh
    sudo echo "PATH=PATH:HIVE_HOME/bin" >> /etc/profile.d/hive.sh./etc/profile

    Hive组成

    主要包含三个部分:
    1.代码本身,在HIVE_HOME/lib下可以看到许多jar,例如hive-exec*.jar,hive-metastore*.ja,每个jar文件都实现了hive功能中某个特定的部分。 2.可执行文件,在HIVE_HOME/bin下,包含hive的命令行界面CLI,CLI是使用hive最常用的方式,一般会使用小写的hive代替。CLI用于提供交互式的界面供输入语句或用户执行hive语句的脚本。
    3.metastore service(元数据服务),所有的hive客户端都需要元数据服务,hive使用这个服务来存储表模式信息和其他元数据信息。通常会使用关系型数据库来存储这些信息,默认使用内置的DerbySQL服务器,其可以提供有限的、单进程的存储服务。例如,当使用Derby时,用户不能执行2个并发的HiveCLI实例,然而,如果是在个人计算机上或某些开发任务上使用的话这样也没有问题。对于集群来说,需要使用MYSQL或类似的关系型数据库。
    另外,hive还有一些组件,Thrift服务提供可远程访问的其他进程的功能,也提供JDBC和ODBC访问Hive的功能。Hive还提供了一个简单的网页界面HWI,提供远程访问Hive服务。

    Hive启动

    使用 HIVE_HOME/bin/hive命令cd HIVE_HOMEbin/hive
    hive>CREATETABLEx(aINT);
    hive>SELECT*fromx;
    hive>DROPTABLEx;
    hive>exit;

    Hive命行

    [root@TESTPBSDIGDATAMASTER01 ~]# hive --help
    Service List: beeline cleardanglingscratchdir cli help hiveburninclient hiveserver2 hiveserver hwi jar lineage metastore metatool orcfiledump rcfilecat schemaTool version
    Parameters parsed:
    --auxpath : Auxillary jars
    --config : Hive configuration directory
    --service : Starts specific service/component. cli is default
    Parameters used:
    HADOOP_HOME or HADOOP_PREFIX : Hadoop install directory
    HIVE_OPT : Hive options
    For help on a particular service:
    ./hive --service serviceName --help
    Debug help: ./hive --debug --help

    需要注意ServiceList:后面的内容,这里提供了几个服务,包括我们绝大多数据时间将要使用的CLI。用户可以通过--servicename服务名称来启用某个服务。

    常用SQL

    *显示数据库 **
    hive>showdatabases;
    OK
    Default
    hive>showdatabaselike'h.
    ';

    **创建数据库 **
    hive>create database test_test001;
    use命令用于将某个数据库设置为用户当前的工作数据库
    hive>usetest_test001;
    设置当前工作数据库后,即可查询所有表
    hive>show tables;
    删除数据库
    hive>drop database if exists test_test001;

    **创建数据 **
    create table if no texists mydb.employees(
    name string comment 'emplyeename',
    Salaryfloat
    )

    **删除表 **
    drop table if exists test_test001;

    修改表
    alter table只会修改元数据

    **表重命名 **
    alter table test_test001renametotes;
    set hive.cli.print.header=true; // 打印列名
    set hive.cli.print.row.to.vertical=true; // 开启行转列功能, 前提必须开启打印列名功能
    set hive.cli.print.row.to.vertical.num=1; // 设置每行显示的列数

    相关文章

      网友评论

        本文标题:分布式SQL查询引擎-Hive

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