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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac pycharm安装设置_python爬虫 | mac系统PyCharm的安装「建议收藏」

    mac pycharm安装设置_python爬虫 | mac系统PyCharm的安装「建议收藏」视频在之前我们是不是提到了,后面我们要学一个集成的开发环境,就是IDE。全称IntegratedDevelopmentEnvironment,翻译过来集成开发环境。我们经常用PyCharm作为Python开发的IDE,我们以后所有的代码当中可能就要用这个工具去写了。下载我们直接在百度输入,https://www.jetbrains.com/pycharm,进入pycharm安装界面…

    2022年8月26日
    6
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛「建议收藏」

    【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛「建议收藏」你学的编程语言真的是你想要的吗

    2022年5月23日
    37
  • openmp矩阵乘法

    openmp矩阵乘法目录 1 实验内容与方法 2 实验过程 2 1 运行时间 2 2 加速比 2 3 图表 3 实验分析 4 源代码 1 实验内容与方法初始化数组 初始化三个 double 矩阵 matrix a matrix b 和 result 矩阵的行和列可以根据数据量大小自行调整 数组中的值使用 c 11 中的 random 类随机生成 0 到 1 之间的 double 值 程序计时 使用 c 11 中的

    2025年8月24日
    2
  • hi3516dv300芯片手册_hi3518ev300

    hi3516dv300芯片手册_hi3518ev300基于Hi3516DV300的嵌入式入门演练(上)基于Hi3516DV300的嵌入式入门演练(下)文章目录信息前言勉励1开始之前1.1操作系统与开发准备1.2推荐的书籍1.3书本之外2最小系统环境的搭建流程2.1VMWareWorkstationPlayer和Kubuntu2.1.1创建虚拟机2.1.2Kubuntu系统安装2.2搭建Hi3516DV300的开发环境2.2.1工具链安装与开发环境配置2.2.2展开SDK2.3U-Boot的编译2.4Kernel的编译2.5根

    2022年9月24日
    2
  • 光流法原理与实现「建议收藏」

    光流法原理与实现「建议收藏」以下内容摘自一篇硕士论文《视频序列中运动目标检测与跟踪算法的研究》:1950年Gibson首先提出了光流的概念,光流(opticalflow)法是空间运动物体在观测成像面上的像素运动的瞬时速度。物体在运动的时候,它在图像上对应点的亮度模式也在做相应的运动,这种图像亮度模式的表观运动就是光流。光流的研究就是利用图像序列中像素的强度数据的时域变化和相关性来确定各自像素位置的“运动”。光流表达

    2022年7月23日
    10
  • SMTP协议分析[通俗易懂]

    感谢原作者:http://blog.csdn.net/bripengandre/article/details/2191048SMTP协议分析第1章.    SMTP概述1.1. SMTP在邮件通信中的位置SMTP,即简单邮件传送协议,所对应RFC文档为RFC821。同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的邮件传送。SMTP在整个电子邮件通

    2022年4月11日
    607

发表回复

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

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