• 大数据实践(八)--Hive、Pig安装及基本操作


    大数据实践(八)--Hive、Pig安装及基本操作

    mysql-connector-java-8.0.16.jar

    hadoop 2.7.3

    hive 2.7.3

    pig 0.12.0

    一、简介

    Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。

    Pig和Hive类似,但不是使用SQL语句,使用的是自己的一套Pig Latin语言,可以使用脚本。相比HiveSQL较灵活。Pig为大型数据集的处理提供了更高层次的抽象,当Pig处理数据时,Pig会在后台生成一系列MapReduce操作来执行任务,这个过程对用户来说是透明的,Pig提供了更丰富的数据结构,一般都是多值和嵌套的数据结构。

    Pig和Hive都将作业转化为MapReduce,区别就像是plsql和sql。

    二、Hive安装、使用

    1、解压hive,加入环境变量
    export HIVE_HOME=/usr/local/hive
    export PATH=$HIVE_HOME/bin:$PATH
    
    2、配置Metastore(mysql)

    在 Hive 中,表名、表结构、字段名、字段类型、表的分隔符等统一被称为元数据。所有的元数据默认存储在 Hive 内置的 derby 数据库中,但由于 derby 只能有一个实例,也就是说不能有多个命令行客户端同时访问,所以在实际生产环境中,通常使用 MySQL 代替 derby。

    将驱动放到hive下的lib目录下

    mysql-connector-java-8.0.16.jar
    

    hive-site.xml

    进入conf目录下,配置驱动连接

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
      <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://ip:3306/hadoop_hive?createDatabaseIfNotExist=true</value>
      </property>
      
      <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
      </property>
      
      <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
      </property>
      
      <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>xxx</value>
      </property>
    
    </configuration>
    
    

    hive-env.sh

    在conf目录下配置环境模板

    cp hive-env.sh.template hive-env.sh
    
     HADOOP_HOME=/usr/local/hadoop
    

    初始化元数据库

    执行命令初始化元数据。

    在mysql中会生成元数据库表。

    schematool -dbType mysql -initSchema
    
    3、启动

    hive依赖hadoop,启动hive前需要启动hadoop.

    通过以下命令就可以启动一个hive shell

    $ hive #启动hive
    
    
    hive> show tables;#输出所有表名
    
    values__tmp__table__1
    values__tmp__table__2
    values__tmp__table__3
    values__tmp__table__4
    values__tmp__table__5
    values__tmp__table__6
    
    
    

    查询、建表

    #建表
    hive> CREATE TABLE city (
        >     city_id INT   ,
        >     pro_id  INT    ,
        >     name    INT
        > );
    OK
    
    #插入数据
    hive> INSERT INTO city (city_id, pro_id, name) VALUES (110100, 110000, '北京市');
    #打印日志可以看到将数据存储到hdfs
    OK
    
    #输出
    >select * from city;
    #中文表示null,通过load加载文件却能显示中文
    
    
    hive>  CREATE TABLE emp(
        >      empno INT,     -- 员工表编号
        >      ename STRING,  -- 员工姓名
        >      job STRING,    -- 职位类型
        >      mgr INT,   
        >      hiredate TIMESTAMP,  --雇佣日期
        >      sal DECIMAL(7,2),  --工资
        >      comm DECIMAL(7,2),
        >      deptno INT)   --部门编号
        >     ROW FORMAT DELIMITED FIELDS TERMINATED BY "	";
    OK
    Time taken: 2.936 seconds
    
    #加载结构化文件
    hive> LOAD DATA LOCAL INPATH "/usr/local/file/emp.txt" OVERWRITE INTO TABLE emp;
    
    #此时中文字符显示
    hive> select * from emp where empno=0;
    OK
    0	李四	CLERK	7782	1982-01-23 00:00:00	1300.00	NULL	10
    Time taken: 3.116 seconds, Fetched: 1 row(s)
    
    

    hdfs存储

    在hdfs文件系统中可以看到hive的文件存储。

    >hdfs dfs -ls /user/hive
    Found 1 items
    drwxr-xr-x   - cgl supergroup          0 2020-11-10 09:52 /user/hive/warehouse
    
    
    
    

    hive-hdfs

    在hive shell中,可以直接使用hdfs的命令,还可以略去hdfs。

    hive>  dfs -ls /;
    Found 5 items
    drwxr-xr-x   - cgl supergroup          0 2020-11-06 16:44 /data
    drwxrwxrwx   - cgl supergroup          0 2020-11-06 16:18 /hadoop
    drwxr-xr-x   - cgl supergroup          0 2020-11-14 11:37 /tmp
    drwxr-xr-x   - cgl supergroup          0 2020-11-14 11:36 /user
    

    hiveserver2

    将Hive当做一个服务启动(类似MySQL数据库,启动一个服务)

    可以使用两种方式连接到hive
    1、bin/beeline
    2、JDBC/ODBC方式,类似MySQL中JDBC/ODBC方式
    

    beeline方式:

    hive将sql转化为MapReduce,很方便。
    
    $ beeline -u jdbc:hive2://localhost:10000  -n username -p password 
    

    三、Pig安装、使用

    1、解压安装
    解压、加入环境变量。
    pig可以在本地运行,不需要其他依赖,适合测试和计算少量数据。
    pig -x local 在本地启动一个shell
    
    
    2、基本操作

    local启动

    #本地启动,测试
    >pig -x local
    #加载本地的文件到表中,表指定字段名和类型
    grunt> spark_table = LOAD '/usr/local/SparkDemo.txt' USING PigStorage(' ') AS (col_1:chararray,col_2:chararray,col_3:chararray);
    
    #查询表,类似select 
    grunt> dump spark_table;
    (java,hadoop,spark)
    (spark,hadoop,java)
    (hive,mysql,)
    (hadoop,Spark,hive)
    (Spark,Flink,hadoop)
    (java,scala,hadoop)
    (SparkHadoopJava,,)
    
    #分页
    grunt>spark_limit = limit spark_table 3;
    grunt>dump spark_limit;
    
    (hive,mysql,)
    (java,hadoop,spark)
    (spark,hadoop,java)
    
    #查询字段
    grunt>col_1 = foreach spark_table generate col_1;
    grunt> dump col_1; 
    (java)
    (spark)
    (hive)
    (hadoop)
    (Spark)
    (java)
    (SparkHadoopJava)
    
    

    hdfs

    配置了Hadoop环境,那么则不需要在pig环境中作其他配置了。

    使用pig启动的grunt 的shell,此时执行的操作会变成MR.

  • 相关阅读:
    Mysql:FAQ:A.5 Triggers
    Mysql:Where are stored {procedures | functions | triggers} ? (例程)存储过程、函数、触发器,存在哪儿?
    Mysql:5.7:all triggers are 【FOR EACH ROW】
    Mysql:FAQ:A.4 Stored Procedures and Functiions
    ANSI SQL 2003:美国国家标准:SQL-2003:该规范并不是free获取——你得花钱!
    Mysql:可恨又可怜Query Cache特性:已死!莫用!
    Mysql:Innodb Cluster【It's not NDB】:Based On Group Replication
    Android -- 补间动画和属性动画
    Android -- Android广播
    Android -- Android数据存储
  • 原文地址:https://www.cnblogs.com/cgl-dong/p/13952588.html
Copyright © 2020-2023  润新知