《数据采集与预处理》教学教案—08用Pig进行数据预处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据采集与预处理教案
教学过程教学提示
一、知识准备:
Pig中主要的操作。
在本地文件系统中,创建一个包含数据的输入文件student_data.txt,
并执行“put”命令,将文件从本地文件系统上传到HDFS中。
(1)载入和存储
①载入:从文件系统或其他存储介质中载入数据到一个relation中。
②存储:保存relation到文件系统或其他存储介质中。
③备份:输出一个relation到控制台,并在控制台上输出关系的内容。
(2)过滤
①FILTER运算符。
FILTER运算符用于根据条件从关系中选择所需的元组。
②DISTINCT运算符。
DISTINCT运算符用于从关系中删除冗余(重复)元组。
③FOREACH运算符。
FOREACH运算符用于基于列数据生成指定的数据转换。
(3)分组与关联
①JOIN运算符。
JOIN运算符用于连接来自两个或多个关系的记录。
连接可以为以下类型:
a.Self-join(自连接)。
b.Inner-join(内部连接)。
c.Outer-join(外部连接)。
左外连接:
右外连接
全外连接
②GROUP运算符。
GROUP运算符用于在一个或多个关系中对数据进行分组,它收集具
有相同key的数据。
③COGROUP运算符。
COGROUP运算符的运作方式与GROUP运算符相同。这两个运算符
之间的唯一区别是GROUP运算符通常用于涉及一个关系的语句,而
COGROUP运算符用于涉及两个或多个关系的语句。
(4)排序
①ORDER BY运算符。
ORDER BY运算符用于基于一个或多个字段排序显示关系的内容。
②LIMIT运算符。
LIMIT运算符用于从关系中获取有限数量的元组。
(5)组合和分隔
①UNION运算符。
Pig中的UNION运算符用于合并两个关系的内容。要对两个关系执行
UNION操作,它们的列和域必须相同。
②SPLIT运算符。
SPLIT运算符用于将关系拆分为两个或多个关系。
二、任务实施:
1.环境配置及数据准备
在/usr/local/Hadoop/etc/Hadoop/目录中,编辑mapred-site.xml文件,代码如下。
执行“start-all.sh”命令,启动Hadoop,再执行“mr-jobhistory-daemon.sh start historyserver”命令,启动HistoryServer服务
执行“jps”命令,查看Hadoop系统进程。
执行“hadoop dfs -mkdir /pig”命令,在HDFS中创建pig目录,并执行“-put”命令,将本地数据上传到HDFS的pig目录中,如图4-1所示。
图4-1 将本地数据上传到HDFS的pig目录中
2.在Pig中预处理数据
(1)执行“pig -x mapreduce”命令,进入Pig的MapReduce执行模式(Pig的另一种执行模式为Local模式),如图4-2所示。
图4-2 Pig的MapReduce执行模式
(2)将数据从HDFS中加载到Pig中,LOAD为数据加载语句,USING PigStorage(',')表示数据是以“,”为分隔符的,chararray为Pig的字符串或字符数组类型,关系创建完成后,可以执行“DUMP”命令验证关系。
(3)使用DISTINCT运算符从bus_info关系中删除冗余元组,将其另存在distinct_data关系中,并执行“DUMP”命令验证关系。
(4)使用FILTER运算符获取distinct_data关系中所有不为空的数据,将其另存在filter_data关系中,并执行“DUMP”命令验证关系。
3.将Pig预处理的文件导出到HDFS中
4.查看数据
在HDFS中查看处理后的数据,并执行“cat”命令查看输出文件,图4-3所示为预处理后的数据。
图4-3 预处理后的数据