zoukankan      html  css  js  c++  java
  • pig代码格式上小注意

    1,%default file test.txt 中不要用引号,'' 和“”都不行。'file'不会被识别

    2,pig判断相等,用==,不是一个=。、


    3,pig中只用单引号,不用双引号,如:

    target_data = FILTER analyze_data BY (wizad_ad_id=='199' OR wizad_ad_id=='200' OR wizad_ad_id=='201' OR wizad_ad_id=='202' OR wizad_ad_id=='203');

    count_guid = FOREACH group_target_data GENERATE CONCAT('campiagnid=','98'), COUNT(target_data.guid);

    中,如果单引号的位置用了双引号,会报Lexical error。


    4,一个会让你发疯的问题,前面%default要注意格式,如%default Raw_Log /user/wizad/data/wizad/raw/2014-11-{03,04,05}/*/adwords*'

    很难发现最后多了一单引号',所以一定要小心。而在load这个文件时候出错。甚至没有生成错误日志文件。


    2,等号=两边要注意。前必须空,后可以不空。所以最好等号两边都有空格。如A = load '$file' as (date, web, name, food);

    因为编译器确定表名,用空格切分,无空格不行,如C= cogroup A by $0, B by $1;执行错误,因为表C名字解析不出来,解析成了“C=”,而用C =cogroup就可以。Pig解析中表必须后面有空格,独立出来。


    3,关键字大小写不敏感,都能用,但建议保持大写。
          变量大小写敏感。尽量简洁,多用_,但不要太长。

    4,必须要有dump或者是store 等实际操作数据内容的命令,才能执行map/reduce,读取表内容。否则,代码只编译。

    %default file test.txt

    A = load '$file' as (date, web, name, food);

    B = load '$file' as (date, web, name, food);

    C= cogroup A by $0, B by $1;

    describe C;

    illustrate C;

    dump C;

    注意,load命令写完后,实际不会立刻执行(例如执行describe A也只是生成一个数据结构,不会从文件中读入数据),而是等待illustrate,和dump命令后,才会真正读入数据到A和B中。所以一般报错,也是在执行了dump和illustrate命令后。


    5,jion,两个关系做jion把size小的放右边。因为从左边一条一条拿,去右边比较。

    6,pig的并行:parallel设置的是reduce阶段的并行,MR只允许用户设置reduce并行,不能控制map,因为MR读数据用InputFormat类,这个类指定map的并行任务数。

     所以,用户需要控制map数,就要自行编写加载函数。loadfunc,


  • 相关阅读:
    POJ3253Fence Repair(优先队列或单调队列)
    POJ3630Phone List(字典树)
    HDU1896Stones(优先队列)
    POJ3468 A Simple Problem with Integers(线段树延时标记)
    HDU3535AreYouBusy(分组背包)
    C++ 学习涨姿势汇总
    [C++] std::vector 使用
    Cocos2dx-3.2 引擎学习(四)之CCScheduler
    Cocos2dx-3.2 引擎学习(三)之AssetsManager
    Cocos2dx-3.2 引擎学习(二)之Director
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205418.html
Copyright © 2011-2022 走看看