Pig:是基于Hadoop并行数据流语言
Pig:输入输出
第一步:加载load
最后执行完数据流之后可以:store 存储 或 dump输出到屏幕
Pig:关系操作
foreach: 对于每一条记录,可以选择相应的字段,传给下一个操作符(相当于SQL中选择需要的列,可以进行count和sum操作)
filter: 过滤(相当于SQL的where)
group: 分组,按照一个一段进行分组,(通过其中包含字段)
Order: 排序 (通过其中包含字段)
Distinct: 去重只会对整个记录去重,不会单独对某个字段去除
Join : 将两个load过来的数据集链接,需要这个两个数据的链接字段,注意不能对同一个关系使用Join
(最好两个关联字段不要重复名字,可以通过起别名的方式)
Limit: 限制数据量。
Count: 使用pig统计行数时,要选择一个不为空的列。
Flatten: 可以将分组的字段的组合拆开。
Pig: 一些基本概念:关系(relation)、包(bag--可看做数据库)、元组(tuple--可看做数据库中行)、字段(field)、数据(data)的关系
一个关系是一个包,一个包由一个或多个元组组成,一个元组由多个字段组成
注意:每个元组的字段的数量可以不一样的
<workflow-app xmlns="uri:oozie:workflow:0.2" name="dashboard-money"
half="3000">
<params>
<param key="yestoday">${yestoday}</param>
<param key="targetDir">/user/cmo_ipc/dashboard/store/repertoryExamination/app_dashboard_store_sales_d/${yestoday}</param>
<param key="mysql_jdbc_1" import="/export/App/etl.sone.jd.local/WEB-INF/classes/conf/jdbc.properties"></param>
<param key="mysql_jdbc_2" import="/export/App/etl.sone.jd.local/WEB-INF/classes/conf/important.properties"></param>
</params>
<start to="genBrand" />
<action name="genBrand">
<delete path="${targetDir}" />
<pig>
<script>yuanshi_fact_table = load '/user/cmo_ipc/app/dashboard/app_dashboard_store_sales_d/tx_dt=${yestoday}/*.lzo' as
( data_date,
data_year,
data_month,
data_week ,
data_day,
data_type,
brand_code,
item_sku_id,
sku_status_cd,
shelves_tm,
otc_tm,
utc_tm,
purchaser_erp_acct,
purchaser_name,
saler_erp_acct,
sale_staf_name,
item_first_cate_cd,
item_second_cate_cd,
item_third_cate_cd,
dept_id_3,
band,
free_goods_flag,
delv_center_num,
major_supp_brevity_code,
ky_stock,
num_order_booking,
num_app_booking,
num_stock,
num_purchase_plan,
num_order_transfer,
num_zt_stock,
num_transfer_plan_in,
num_transfer_plan_out,
basestock,
loweststock,
num_nosale,
target_num_stock,
health_num_stock,
health_je_stock,
mkt_prc,
jd_prc ,
stk_prc,
wh_qtn,
into_wh_qtty ,
status ,
sys_reple_qty,
reple_qty,
sales_qtty_1,
sales_mount_1,
sales_qtty_7,
sales_mount_7,
sales_qtty_14,
sales_mount_14,
sales_qtty_28,
sales_mount_28,
sales_qtty_60 ,
sales_mount_60,
sales_qtty_90 ,
sales_mount_90,
is_xhkc_flag ,
is_sg_flag ,
is_xg_flag ,
is_bh_flag ,
zzts_sl ,
zzts_je ,
nosale_days ,
xiagui_kc_sl ,
xiagui_kc_je ,
xiagui_sc ,
is_dh_flag ,
is_qh_flag ,
qh_sl ,
qh_je ,
is_zx_flag ,
zx_sl ,
zx_je ,
zt_sl ,
kc_je ,
pv_xhl ,
is_bdx_flag ,
bdx_sl ,
bdx_je ,
qh_ss_je );
</script>
<script>temp11= filter yuanshi_fact_table by item_first_cate_cd=='737' ;</script>
<script>
temp1 = FOREACH temp11 GENERATE data_date,
data_year,
data_month,
data_week ,
data_day,
data_type,
brand_code,
item_sku_id as sku_id,
sku_status_cd,
shelves_tm,
otc_tm,
utc_tm,
purchaser_erp_acct,
purchaser_name,
saler_erp_acct,
sale_staf_name,
item_first_cate_cd,
item_second_cate_cd,
item_third_cate_cd,
dept_id_3,
band,
free_goods_flag,
delv_center_num,
major_supp_brevity_code,
ky_stock,
num_order_booking,
num_app_booking,
num_stock,
num_purchase_plan,
num_order_transfer,
num_zt_stock,
num_transfer_plan_in,
num_transfer_plan_out,
basestock,
loweststock,
num_nosale,
target_num_stock,
health_num_stock,
health_je_stock,
mkt_prc,
jd_prc ,
stk_prc,
wh_qtn,
into_wh_qtty ,
status ,
sys_reple_qty,
reple_qty,
sales_qtty_1,
sales_mount_1,
sales_qtty_7,
sales_mount_7,
sales_qtty_14,
sales_mount_14,
sales_qtty_28,
sales_mount_28,
sales_qtty_60 ,
sales_mount_60,
sales_qtty_90 ,
sales_mount_90,
is_xhkc_flag ,
is_sg_flag ,
is_xg_flag ,
is_bh_flag ,
zzts_sl ,
zzts_je ,
nosale_days ,
xiagui_kc_sl ,
xiagui_kc_je ,
xiagui_sc ,
is_dh_flag ,
is_qh_flag ,
qh_sl ,
qh_je ,
is_zx_flag ,
zx_sl ,
zx_je ,
zt_sl ,
kc_je ,
pv_xhl ,
is_bdx_flag ,
bdx_sl ,
bdx_je ,
qh_ss_je;
</script>
<script>temp2=load '/user/cmo_ipc/app/dashboard/app_dashboard_store_score_d/tx_dt=${yestoday}/*.lzo' as
(data_date,data_year,data_month,data_week,data_day,item_sku_id,delv_center_num,score_total,score_qh,score_zx,score_bdx,score_xg,gjdj_total,gjdj_qh,gjdj_zx,gjdj_bdx,gjdj_xg);
</script>
<script>
t2 = FOREACH temp2 GENERATE item_sku_id,score_total,score_qh,score_zx,score_bdx,score_xg;
</script>
<script>
t3 = JOIN temp1 BY sku_id, t2 BY item_sku_id;
</script>
<script>
t1= FOREACH t3 GENERATE data_date,data_type,item_third_cate_cd,brand_code,item_sku_id,band,dept_id_3,purchaser_erp_acct,
major_supp_brevity_code,delv_center_num,CONCAT(CONCAT(item_sku_id,'_'),delv_center_num),num_stock,ky_stock,sales_qtty_1,sales_mount_1,
sales_qtty_7,sales_mount_7,sales_qtty_14,sales_mount_14,sales_qtty_28,sales_mount_28,sales_qtty_60,sales_mount_60,sales_qtty_90,
sales_mount_90,zt_sl,num_zt_stock,num_order_booking,pv_xhl,qh_ss_je,qh_sl,is_qh_flag,zzts_sl,zzts_je,zx_sl,is_zx_flag,nosale_days,
bdx_sl,is_bdx_flag,xiagui_kc_sl,xiagui_sc,is_xg_flag,is_xhkc_flag,is_sg_flag,health_num_stock,score_total,score_qh,score_zx,
score_bdx,score_xg,qh_je,xiagui_kc_je,bdx_je,zx_je,health_je_stock;
</script>
<script>store t1 into '${targetDir}' ;</script>
</pig>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail" />
<end name="end" />
</workflow-app>
相关推荐
1. **易学易用** :Pig 的 **Pig Latin** 语言设计简洁,易于学习,尤其是对于那些熟悉SQL的用户。 2. **灵活性** :Pig 支持自定义函数(UDF),允许用户添加自己的业务逻辑,大大增强了其处理复杂数据类型的能力。...
标题 "基于Hadoop平台的Pig语言对Apache日志系统的分析" 涉及到的主要知识点包括Hadoop、Pig语言以及Apache服务器日志的处理。以下是对这些关键概念的详细解释: 1. Hadoop平台: Hadoop是Apache软件基金会开发的...
Pig基础教程涵盖了Pig语言的基本概念、语法、数据类型、操作符和内置函数,这些都是使用Pig进行数据处理和分析的基础。 首先,教程中会介绍Pig Latin的基本语法约定。Pig Latin语法遵循一定的规则,例如,小括号“...
《Pig语言与Map-Reduce:深入理解pig-0.9.2.tar.gz》 Apache Pig是Hadoop生态系统中的一个高级数据处理工具,它提供了一种面向用户的脚本语言,称为Pig Latin,用于构建Map-Reduce作业。Pig拉丁语简化了大数据处理...
对于初学者来说,通过学习Pig 0.15的源码,可以提升对大数据处理流程、分布式计算模型以及脚本语言解析等核心概念的理解。 1. **Pig Latin语法与解析**: Pig Latin是Pig所使用的声明式数据流语言,它允许用户以一...
总之,Pig的源码包提供了丰富的学习资源,无论是对初学者还是资深开发者,都能从中获取宝贵的知识,深入理解大数据处理的底层机制,并提升自己的技能。通过阅读和分析源码,我们可以更好地掌握Pig的运行方式,从而在...
在后端开发方面,PIG可能采用了Java、Go或Node.js等语言,结合Spring Boot、Django、Express等框架构建服务。源码将揭示如何设计RESTful API,实现数据库操作(SQL或NoSQL)、事务管理、安全认证(OAuth2、JWT)、...
本指南将深入探讨Pig编程的核心概念,结合从GitHub下载的"programmingpig-master"源码,为学习者提供一个实践和理解Pig的平台。 一、Pig Latin:Pig的数据流语言 Pig Latin是一种声明式语言,允许用户编写复杂的...
Pig Latin语言结构清晰,易于学习,能有效提高开发效率。 二、Hadoop环境准备 在安装Pig之前,需要确保已经安装并配置好Hadoop环境。这包括安装Hadoop Common、HDFS、MapReduce和YARN(如果适用)等组件,并确保...
《Apache Pig 0.17.0 安装与配置指南》 Apache Pig 是一个用于大数据分析的平台,它提供了一种高级语言 Pig Latin 来处理大规模...通过不断的实践和学习,你将能更好地掌握Pig的潜力,为大数据分析带来强大的动力。
本课程聚焦于“Hadoop 08 Pig安装与Pig Latin语言”,旨在深入理解Pig的工作原理及其在实际应用中的价值。 Pig拉丁语(Pig Latin)是Pig的编程语言,它允许用户以一种声明性的方式编写数据处理逻辑,而非传统的低级...
Pig提供了一种名为Pig Latin的脚本语言,它是一种并行数据流语言,可以用来描述数据的转换和处理过程。Pig Latin语言的设计哲学是以简单易学、扩展性强、且与Hadoop紧密集成著称,它的目的是简化并加速Hadoop上复杂...
在本书中,作者提供了丰富的样例脚本、用户定义函数(UDF)以及数据集,帮助读者理解并掌握Pig语言的精髓。Pig是Hadoop生态系统中的一个高级数据处理工具,其设计目标是简化大规模数据集的分析任务,通过提供一种...
Pig则需要学习新的Pig Latin语言。 4. 动态性:Pig允许在运行时改变数据处理逻辑,而Hive的优化主要在编译时完成,对运行时变化的适应性较弱。 四、实际应用 在大数据处理场景中,Pig和Hive常常结合使用。例如,Pig...
《Apache Pig 0.12.0 在 CDH 5.5.0 上的应用...通过学习和掌握 Pig Latin 语言、理解 Pig 在 CDH 上的运行机制以及利用其与 CDH 其他组件的集成,用户可以更高效地对海量数据进行分析和挖掘,从而发掘出有价值的信息。
这本书详细介绍了Pig语言的使用,以及如何在Hadoop平台上利用Pig来处理和分析大数据。Pig语言是一种高级的脚本语言,它用于简化在Hadoop上执行的复杂MapReduce程序,具有易于编写、易于维护和易于调试的特点。 ### ...
2. 简单易学:对于熟悉 SQL 的开发者,学习 Pig Latin 相对容易。 3. 易于控制执行:可以自定义执行流程,如插入 UDF,以便进行特定的数据处理。 4. 延迟执行:Pig 采用延迟评估策略,只有在实际需要输出时才执行...
Pig Latin是Pig的编程语言,它允许用户编写复杂的数据处理任务,而无需深入理解分布式计算的细节。 在安装Pig-0.16.0之前,你需要确保已经安装了Java Development Kit (JDK) 1.6或更高版本,因为Pig是构建在Java之...
《Programming Pig Dataflow Scripting with Hadoop》第二版是一本深入探讨...通过学习这本书,读者不仅能掌握Pig语言的精髓,还能深入了解如何在实际项目中应用Pig进行大数据处理,从而提升数据分析和解决问题的能力。