pig询问top k,每个返回hour和ad_network_id最大的两个记录(SUBSTRING,order,COUNT_STAR,limit)

pig询问top k,每个返回hour和ad_network_id最大的两个记录(SUBSTRING,order,COUNT_STAR,limit)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

pig里面有一个TOP功能。我不知道为什么用不了。有时间去看看pig源代码。

SET job.name ‘top_k’;

SET job.priority HIGH;

–REGISTER piggybank.jar;

REGISTER wizad-etl-udf-0.1.jar;

–DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader();

DEFINE SequenceFileLoader com.vpon.wizad.etl.pig.SequenceFileCSVLoader();

–%default cleanedLog /user/wizad/data/wizad/cleaned/2014-07-30/*/part*

%default cleanedLog /user/wizad/data/wizad/cleaned/$date/*/part*

%default output_path /user/wizad/tmp/hour_count

origin_cleaned_data = LOAD ‘$cleanedLog’ USING SequenceFileLoader 

AS (ad_network_id:chararray,

    wizad_ad_id:chararray,

    guid:chararray,

    id:chararray,

    create_time:chararray,

    action_time:chararray,

    log_type:chararray, 

    ad_id:chararray,

    positioning_method:chararray,

    location_accuracy:chararray,

    lat:chararray, 

    lon:chararray,

    cell_id:chararray,

    lac:chararray,

    mcc:chararray,

    mnc:chararray,

    ip:chararray,

    connection_type:chararray,

    imei:chararray,

    android_id:chararray,

    android_advertising_id:chararray,

    udid:chararray,

    openudid:chararray,

    idfa:chararray,

    mac_address:chararray,

    uid:chararray,

    density:chararray,

    screen_height:chararray,

    screen_width:chararray,

    user_agent:chararray,

    app_id:chararray,

    app_category_id:chararray,

    device_model_id:chararray,

    carrier_id:chararray,

    os_id:chararray,

    device_type:chararray,

    os_version:chararray,

    country_region_id:chararray,

    province_region_id:chararray,

    city_region_id:chararray,

    ip_lat:chararray,

    ip_lon:chararray,

    quadkey:chararray);

show_log= FILTER origin_cleaned_data by log_type==’1′;

–extract column for analyzing。提取子字段做为新属性

original_hour = FOREACH show_log GENERATE ad_network_id,wizad_ad_id,guid,app_category_id,log_type,SUBSTRING(create_time,11,13) AS hour;  –(wizad_ad_id,guid,log_type,hour)

hour_group = GROUP original_hour BY (hour,app_category_id);–按属性分类,

hour_count = foreach hour_group{

                                –guid_data = $1.guid;

                                –uniq_guid = distinct guid_data;–去重处理。

查唯一个数。
                                ad_network_ids = original_hour.ad_network_id;

                uniq_ad_network_ids = distinct ad_network_ids;

–统计每一个包下的个数,将后面uniq_ad_network_ids分成单个记录。

比方,uniq_ad_network_ids原值{3,5},现变成两条记录,分为(xx,3)(xx,5)两条记录

                 generate flatten(group), COUNT_STAR($1) AS pv, flatten(uniq_ad_network_ids);

                        }

describe hour_count;

–查看结构为:hour_count: {group::hour: chararray,group::app_category_id: chararray,pv: long,uniq_ad_network_ids::ad_network_id: chararray}

group_hour_count = group hour_count by (hour,ad_network_id);

top_2_data = foreach group_hour_count {

                        –top_dataset = TOP(2,hour_count.pv, hour_count);–top函数 不能用。有谁用过告诉一声。我就不用看源代码拉,哈哈

                        –hour_data = hour_count;                        

–top k实现方式。order排序,limit返回前k个。

                        order_hour_count = order hour_count by pv DESC;

                        top2_hour_count = limit order_hour_count  2;

                        –generate group, top2_hour_count.pv, top2_hour_count.app_category_id;– 注意,后面是两个bag。分开的。

                        generate flatten(top2_hour_count );

}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117619.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android之LayoutInflater详解_什么是LayoutInflater

    作用:LayoutInflater作用是将layout的xml布局文件实例化为View类对象 对于常见的一个已经载入的Activity, 我们可以使用findViewById方法来获得其中的界面元素. 而对于一个没有被载入或者想要动态载入的界面, 就需要使用inflate来载入了. 方法:    Android里面想要创建一个画面的时候, 初学一般都是新建一个类, 继承Acti

    2022年3月9日
    54
  • Spring中的注解 @RequestBody和@ResponseBody的使用和区别

    Spring中的注解 @RequestBody和@ResponseBody的使用和区别一、@RequestBody@RequestBody的作用是将前端传来的json格式的数据转为自己定义好的javabean对象如图以微信小程序为例,前端向后端传入如下json格式的数据需要注意的是传入数据的属性名称要和后端javabean中定义的一致发送请求后可以看到在控制台中我们通过javabean对象的get方法打印出了前端传来的值,说明json数据已经成功的被转换为了javab…

    2022年5月28日
    107
  • netty 释放bytebuf_python高性能框架

    netty 释放bytebuf_python高性能框架目录一、ByteBuf介绍二、分配方式堆缓冲区直接缓冲区ByteBufAllocatorUnpooled缓冲区三、ByteBuf的操作可丢弃字节可读字节可写字节索引管理查找操作派生缓冲区引用计数工具类资源释放一、ByteBuf介绍网络数据的基本单位总是字节。JavaNIO提供了ByteBuffer作为它的字节容器…

    2022年9月19日
    1
  • 2020互联网行业术语

    2020互联网行业术语互联网行业一般指的是互联网企业,是指以计算机网络技术为基础,利用网络平台提供服务并因此获得收入的企业。其业务范围通常覆盖全国甚至全球,注册用户通常达到千万级以上,用户活跃度也非常高,经常在同一时间点出现请求并行的情况。代表企业有阿里巴巴、腾讯、百度、东、宇节跳动,美团饿了么等。传统行业通常是指互联网向传统行业渗透,实质是传统行业需要互联网。互联网是技术平台、底层架构,它源于安全需求,却在经济领域大放异彩。传统经济正向网络经济转轨,这-有机联系的经济使各行各业均需连接,因此以互联网为代表的联接型

    2022年6月15日
    53
  • AAA认证

    AAA认证AAA:认证、授权、计费的作用1、认证模式为AAA[Huawei]user-interfacevty04[Huawei-ui-vty0-4]authentication-mode?aaaAAAauthenticationpasswordAuthenticationthroughthepasswordofauserterminalinterface[Huawei-ui-vty0-4]authentication-modeaaa–将t.

    2022年6月7日
    93
  • 使用VS开发C语言

    在嵌入开发板上做了一段时间的C语言开发后,今天突然心血来潮,想起大学时期在TurboC和TC3下写代码的情形。大一时宿舍里有台386(在当时是算比较先进的了),大一大二基本上都在玩DOS和WIN31、

    2021年12月23日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号