zoukankan      html  css  js  c++  java
  • 大数据实践(八)--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.

  • 相关阅读:
    POJ 1401 Factorial
    POJ 2407 Relatives(欧拉函数)
    POJ 1730 Perfect Pth Powers(唯一分解定理)
    POJ 2262 Goldbach's Conjecture(Eratosthenes筛法)
    POJ 2551 Ones
    POJ 1163 The Triangle
    POJ 3356 AGTC
    POJ 2192 Zipper
    POJ 1080 Human Gene Functions
    POJ 1159 Palindrome(最长公共子序列)
  • 原文地址:https://www.cnblogs.com/cgl-dong/p/13952588.html
Copyright © 2011-2022 走看看