• PIG 学习笔记1


    PIG是个很好的大数据查询的工具,刚好参加一个项目用到了PIG,机会难得,学习学习。

    1. 执行模式

    - 本地模式,在同一个JVM中运行,访问本地文件系统,适用于小数据集,使用时加上参数 –x local 或 –exectype local。

    - hadoop模式,在hadoop集群中运行,适用于海量数据集。

    hadoop模式配置

    - 设置环境变量PIG_HADOOP_VERSION,如 export PIG_HADOOP_VERSION=18

    - 设置hadoop job tracker 和 namenode 的地址(有两种方案)

        如果有hadoop site的配置文件,且定义了fs.default.name和mapred.job.tracker,可以将含有改配置文件的文件夹的路径设置给环境变量PIG_CLASSPATH,如 export PIG_CLASSPATH=$HADOOP_INSTALL/conf

        也可以创建一个配置文件pig.properties,在该配置文件中设置fs.default.name和mapred.job.tracker的值, 如:

        fs.default.name=hdfs://localhost:9100

        mapred.job.tracker=localhost:9000

    2. Run PIG 程序

    有三种方式可以run pig程序,script/grunt/embeded

    script,直接run一个pig command script file。

    grunt,交互式命令行。

    embeded,在java中运行pig program。

    3. An Example

    records = LOAD 'input/ncdc/micro-tab/simple.txt' >> AS (year:chararray,temperature:int,quality:int);

    - 该语句读取源数据

    - 输入是以 TAB 键分割的
    - chararray相当于java的string, int相当于java的int
    - LOAD 后接着用文件路径,文件路径可以是本地文件,或者是HDFS URI- AS(可选)给每一个field命名,以便后续的语句引用

    - LOAD 的输出是一个关系(relation),它类似于数据库表的元组集合,由多个field组成,每个field都有名字。DESCIBE操作符可以查看输出关系的结构,DUMP操作符可以查看结果。

    filtered_records = FILTER records BY temperature != 9999 AND ( quality ==0 OR quality ==1 OR quality ==4 OR quality ==5 OR quality ==9);

    - 该语句过滤了一些无效的数据

    grouped_records = GROUP filtered_records BY year;

    - 该语句根据年份来进行分组

    max_temp = FOREACH grouped_records GENERATE group,MAX(filtered_records.temperature);

    - FOREACH 处理每一行的数据, GENERATE 关键字定义输出的数据,这里的输出是 年份(group)和该年的最高温度

    - MAX是内置的一个函数,用于计算最大值

    4. PIG 语句基本上由三部分组成

    - LOAD语句或load/store函数, 读取数据,PigStorage是默认的load函数

    - 数据处理语句

    FILTER

    FOREACH

    GROUP

    COGROUP

    INNER JOIN

    OUTER JOIN

    UNION

    SPLIT

    - DUMP or STORE 语句,查询或保存结果, PigStorage是默认的store函数

    5. Debug

    DUMP

    DESCRIBE

    EXPLAIN

    ILLUSTRATE

  • 相关阅读:
    焦点
    class类名的管理
    querySelector选择器
    DOM动态添加表格
    Java父类强制转换子类原则
    Maven精选系列--classifier元素妙用
    Git分支管理
    Eclipse代替Oracle接管Java EE
    细数Intellij Idea10个蛋疼问题!
    Git仓库操作命令
  • 原文地址:https://www.cnblogs.com/gaara/p/2171197.html
Copyright © 2020-2023  润新知