`

pig处理json格式数据,取top100

阅读更多
在如下数据类型中
文件A:这里面是sequenceFile格式文件,key是long型时间戳,value是一个Text类型字符串(是JSON格式)
{"app":"bshare","data":{"ip":"1032096474","keyword":"%E6%9D%8E%E5%85%8B%E5%BC%BA%2C%E6%9D%8E%E5%85%8B%E5%BC%BA%E5%87%BA%E8%AE%BF%E6%AC%A7%E6%B4%B2%E4%B8%89%E5%9B%BD","referrer":"http://news.sina.com.cn/","title":"%E6%9D%8E%E5%85%8B%E5%BC%BA%E5%90%91%E4%BF%84%E7%BD%97%E6%96%AF%E6%97%A0%E5%90%8D%E7%83%88%E5%A3%AB%E5%A2%93%E7%8C%AE%E8%8A%B1%E5%9C%88%28%E5%9B%BE%29%7C%E6%9D%8E%E5%85%8B%E5%BC%BA_%E6%96%B0%E6%B5%AA%E6%96%B0%E9%97%BB","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36","url":"http://news.sina.com.cn/c/p/2014-10-13/164030981857.shtml","uuid":"cc6dc2b3-f467-40cb-afae-c7c6154a5f54","vid":"1CH3vFsRCmQaVQG9J8yH"},"time":"2014-10-13 18:01:14","type":"view"}


文件B: 这里也是SequenceFile, key是Text型,对应的是上面数据中的vid,value是一个Text类型字符串(也是JSON格式)
{"age_group":"45-54","article_titles":["新浪新闻"],"bshare_id":"1CH01b9HB2uj7UuIP818","country_city":"UNKNOWN","device":"UNKNOWN","gender":"m","interests":["sports"],"keywords":["汽车"]}


文件C:referrer_top100.txt 记录排名前100的referrer

求:referrer_top100下的所有vid和vid属性。


pig脚本一:

REGISTER /Users/shuguo/pig/contrib/piggybank/java/piggybank.jar;
DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader();

domain = load '/tmp/input/top_domain.txt' using PigStorage('\t') as (
 domain_text:chararray
);

domain_cookie =load '/tmp/input/gnome_simple.data' USING SequenceFileLoader('\t') as (
 time:chararray,
 log_text:chararray
);

cookie = load '/tmp/input/buzz_cookie_simple.data' USING SequenceFileLoader('\t') as (
 vid:chararray,
 cookie_value:chararray
);


domain = foreach domain generate
domain_text as  domain_text;

cookie = foreach cookie generate
vid as vid,
cookie_value as  cookie_value;

domain_cookie_a = foreach domain_cookie generate log_text;
store domain_cookie_a into '/tmp/input/domain_cookie.json' using PigStorage('\t');
log_domain_cookie = load '/tmp/input/domain_cookie.json' USING JsonLoader('app:chararray,
data(ip:chararray, keyword:chararray,referrer:chararray, title:chararray,ua:chararray,url:chararray,uuid:chararray,vid:chararray),
time:chararray,
type:chararray');

domain_cookie_b = foreach log_domain_cookie generate
vid as  vid,
title as title;

domain_cookie_c = distinct domain_cookie_b;


domain_cookie_find = join domain_cookie_c by title, domain by domain_text; 
domain_cookie_result = foreach domain_cookie_find generate domain_cookie_find::domain::domain_text as domain,domain_cookie_find::domain_cookie_c::vid as vid;

domain_result = join domain_cookie_result by vid, cookie by vid; 
domain_result = foreach domain_result generate domain_result::domain_cookie_result::domain, domain_result::domain_cookie_result::vid,domain_result::cookie::cookie_value;
store domain_result into '/tmp/input/tony_domain' using PigStorage('\t');


pig脚本二:

register /opt/pig/contrib/piggybank/java/piggybank.jar;
REGISTER /home/code/opensource/elephant-bird/pig/target/elephant-bird-pig-4.6-SNAPSHOT-jar-with-dependencies.jar;

DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader();
DEFINE JsonStringToMap com.twitter.elephantbird.pig.piggybank.JsonStringToMap();

genome_raw = LOAD '$INFILE1' using SequenceFileLoader() as (key:long, value:chararray); 
genome_parsed = FOREACH genome_raw GENERATE JsonStringToMap(value) as genome_data:map[];

genome_data = FOREACH genome_parsed GENERATE JsonStringToMap(genome_data#'data');
top_100_domain = LOAD '$INFILE2' as (domain:chararray);

cookie_domain = FOREACH  genome_data GENERATE json#'vid' as vid:chararray,FLATTEN(REGEX_EXTRACT(json#'url', '(http://[^/]+).*',1)) as d:chararray;

cookie_with_domain = JOIN cookie_domain BY d,top_100_domain BY  domain USING 'replicated';
cookie_with_domain_se = FOREACH cookie_with_domain GENERATE vid, domain;
cookie_with_domain_gr = GROUP cookie_with_domain_se BY vid;
cookie_with_domain_re = FOREACH cookie_with_domain_gr GENERATE $0 as vid,$1.domain as domain;

cookie_info_raw = LOAD '$INFILE3' USING com.twitter.elephantbird.pig.load.SequenceFileLoader (
    '-c com.twitter.elephantbird.pig.util.TextConverter',
    '-c com.twitter.elephantbird.pig.util.TextConverter'
) AS  (
	key:chararray,
	value:chararray
);
cookie_info = FOREACH cookie_info_raw GENERATE JsonStringToMap(value) as cookie:map[];

cookie_join = JOIN  cookie_with_domain_re BY vid, cookie_info BY cookie#'bshare_id'; 
cookie_result = FOREACH cookie_join GENERATE cookie#'bshare_id',cookie#'age_group',cookie#'country_city',cookie#'device',cookie#'gender',cookie#'interests',domain;

STORE cookie_result INTO  '$OUTFILE';
0
0
分享到:
评论

相关推荐

    pig-json:用于 Apache Pig 的 Mortar JSON 工具

    猪-json 用于 Apache Pig 的 Mortar JSON 工具。... 使用 pig-json 优于 Pig 的内置 JsonStorage 的好处是 pig-json 读取任意 JSON 数据而无需元数据文件,而 Pig 内置的 JsonStorage 只能读取它使

    基于Pig__Spark的分布式数据分析处理平台.pdf

    本文是关于如何利用Spark的内存计算特性与Pig的数据处理语言相结合,共同打造一个更为高效的大数据分布式分析处理平台。首先,本文提出传统基于MapReduce的Pig数据分析平台在处理大数据时存在的一些问题,如高延迟和...

    pig格式图片编辑工具

    "pig格式图片编辑工具"是一个专注于处理特定图像格式(如pig, pceg)的软件,它提供了方便的图片转换和尺寸变换功能。 "Pig"格式可能是一个相对少见的图像格式,这种格式可能由特定的硬件或软件所支持,不被大多数...

    pig源码0.15版

    这些函数在源码中以LoadStoreFunc接口的形式体现,它们定义了数据的输入输出格式,包括CSV、JSON等多种常见格式。 5. **Pig执行引擎**: Pig的执行引擎是整个框架的核心,它将Pig Latin转换为MapReduce任务。源码...

    pig(猪脸数据集)已标注为.xml文件

    XML文件是常见的用于存储图像注解的数据格式,它提供了结构化的信息,方便机器学习算法理解图像内容。 描述中的关键信息有以下几点: 1. **数量**:数据集中总共有1447张图片,这是一个相当大的样本量,对于训练...

    pig编程指南中的样例脚本、UDF、数据集

    这些数据集通常包含各种类型和格式的数据,如CSV、JSON或Avro,这有助于读者熟悉不同数据源的处理方式。在实践中,可以使用Pig的`LOAD`命令加载数据,然后应用一系列操作来探索、转换和分析数据,最后通过`DUMP`或`...

    pig编程指南源码

    源码中的示例可能包括不同格式的数据输入输出,如CSV、JSON或自定义格式,这有助于我们理解Pig的灵活性。 四、自定义函数(UDFs) Pig Latin虽然强大,但有时仍需自定义函数来实现特定的业务逻辑。Pig支持两种类型...

    Python库 | json2parquet-0.0.8-py2-none-any.whl

    这个库专门用于将JSON数据转换为Parquet文件格式,这是一种高效、列式存储的数据格式,常用于大数据分析和处理。 首先,让我们了解JSON(JavaScript Object Notation)。JSON是一种轻量级的数据交换格式,易于人...

    pig官方基础教程

    UDF允许用户扩展Pig的功能,通过编写自己的函数来处理数据。Pig支持多种语言编写UDF,包括Java、Python、JavaScript等。 Pig的基础教程会以理论讲解配合实际案例的方式,引导用户了解如何使用Pig进行数据的加载、...

    buliding\horse\pig\rabbit\table\wolf等各种点云数据集pcd文件

    这些点云数据集被存储为PCD(Point Cloud Data)文件格式,这是一种广泛用于存储和处理点云数据的标准格式。 PCD文件是一种轻量级的数据结构,它不仅包含了点云的基本信息,如每个三维点的坐标(X, Y, Z),还可能...

    Apache Hadoop---Pig.docx

    Apache Hadoop 中的 Pig 是一个强大的分布式数据分析引擎,专门设计用于处理大规模数据集。Pig 构建在 Hadoop 平台上,通过提供一个名为 Pig Latin 的高级抽象语言,简化了在 Hadoop 上进行数据分析的过程。Pig ...

    大数据之pig 命令

    - **数据转换**:通过对数据进行格式化、合并或拆分等操作,Pig可以帮助准备数据以供进一步分析。 - **数据集成**:利用Pig的JOIN功能,可以在不同数据源之间进行高效的数据整合。 - **复杂查询**:对于需要执行多步...

    Hadoop大数据技术-pig操作

    Pig支持多种数据格式,如CSV、JSON、Avro等,通过自定义Loader和Storer可以扩展对更多格式的支持。 4. **UDF(User Defined Functions)**:Pig允许用户编写自己的函数以处理特定的数据转换和计算任务。这包括内建...

    Hadoop大数据处理讲义-C10. Hive_Pig.pdf

    Hive_Pig.pdf】主要涵盖了两个重要的大数据处理工具——Hive和Pig,它们都是建立在Hadoop生态系统之上,用于处理和分析大规模数据的框架。 ### Hive Hive是由Facebook开发的数据仓库系统,它允许用户使用类似于SQL...

    praige-zerp:Pig OTM-JSON字典或输入

    OTM(Object-Text-Mapper)是Pig提供的一种机制,它允许用户将Pig Latin脚本中的数据与JSON(JavaScript Object Notation)格式的数据进行映射和交互,这在处理半结构化数据时非常有用。 首先,我们需要理解Pig ...

    Programming Pig Dataflow Scripting with Hadoop 2nd EditionPDF

    4. **数据加载与存储**:Pig支持多种数据格式,包括CSV、JSON、XML等。书里会介绍如何使用LOAD和STORE命令加载和保存数据,以及如何处理不同类型的数据源。 5. **数据转换与清洗**:数据预处理是数据分析的重要步骤...

    pig的源码包

    通过自定义这些类,用户可以实现对新数据格式的支持。 7. 性能调优:通过对源码的深入研究,可以了解Pig的性能瓶颈以及如何进行优化。例如,调整并行度、使用更高效的排序算法、优化数据分区策略等。 总之,Pig的...

    pig-0.17.0.tar的安装包,

    假设你有一个名为 `sales.txt` 的数据文件,你可以使用以下Pig Latin脚本来加载并处理数据: ```piglatin -- 加载数据 sales = LOAD 'sales.txt' USING PigStorage(',') AS (date:chararray, product:chararray, ...

    pig-0.7.0.tar.gz

    2. **数据类型增强**:Pig支持更丰富的数据类型,如日期、时间戳和大型对象,这使得处理复杂的数据结构变得更加便捷。 3. **UDF(用户定义函数)扩展**:0.7.0版本提供了更多的内置UDF,同时也支持用户自定义UDF,...

    pig java 编程jar包

    在Pig中,Java编程主要用于开发UDF(用户定义函数),这些函数可以是Java类,用于处理Pig无法直接处理的数据格式或业务逻辑。例如,如果你需要对数据进行特定的字符串处理或者应用复杂的数学计算,你可以编写一个...

Global site tag (gtag.js) - Google Analytics