如何将数据加载到Apache Pig中,操作是什么
Admin 2022-09-26 群英技术资讯 323 次浏览
一般来说,Apache Pig在Hadoop之上工作。它是一种分析工具,用于分析 Hadoop File System中存在的大型数据集。要使用Apache Pig分析数据,我们必须首先将数据加载到Apache Pig中。本章介绍如何从HDFS将数据加载到Apache Pig。
在MapReduce模式下,Pig从HDFS读取(加载)数据并将结果存回HDFS。因此,让我们先从HDFS开始,在HDFS中创建以下示例数据。
学生ID | 名字 | 姓氏 | 电话号码 | 城市 |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | siddarth | Battacharya | 9848022338 | Kolkata |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanthy | 9848022336 | Bhuwaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
上述数据集包含六个学生的个人详细信息,如id,名字,姓氏,电话号码和城市。
首先,使用Hadoop version命令验证安装,如下所示。
$ hadoop version
如果你的系统里有Hadoop,并且已设置PATH变量,那么你将获得以下输出 -
Hadoop 2.6.0 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1 Compiled by jenkins on 2014-11-13T21:10Z Compiled with protoc 2.5.0 From source with checksum 18e43357c8f927c0695f1e9522859d6a This command was run using /home/Hadoop/hadoop/share/hadoop/common/hadoop common-2.6.0.jar
浏览Hadoop的 sbin 目录,并启动 yarn 和Hadoop dfs(分布式文件系统),如下所示。
cd /$Hadoop_Home/sbin/ $ start-dfs.sh localhost: starting namenode, logging to /home/Hadoop/hadoop/logs/hadoopHadoop-namenode-localhost.localdomain.out localhost: starting datanode, logging to /home/Hadoop/hadoop/logs/hadoopHadoop-datanode-localhost.localdomain.out Starting secondary namenodes [0.0.0.0] starting secondarynamenode, logging to /home/Hadoop/hadoop/logs/hadoop-Hadoopsecondarynamenode-localhost.localdomain.out $ start-yarn.sh starting yarn daemons starting resourcemanager, logging to /home/Hadoop/hadoop/logs/yarn-Hadoopresourcemanager-localhost.localdomain.out localhost: starting nodemanager, logging to /home/Hadoop/hadoop/logs/yarnHadoop-nodemanager-localhost.localdomain.out
在Hadoop DFS中,可以使用 mkdir 命令创建目录。在HDFS所需路径中创建一个名为 Pig_Data 的新目录,如下所示。
$cd /$Hadoop_Home/bin/ $ hdfs dfs -mkdir hdfs://localhost:9000/Pig_Data
Pig的输入文件包含单个行中的每个元组/记录。记录的实体由分隔符分隔(在我们的示例中,我们使用“,”)。在本地文件系统中,创建一个包含数据的输入文件 student_data.txt ,如下所示。
001,Rajiv,Reddy,9848022337,Hyderabad 002,siddarth,Battacharya,9848022338,Kolkata 003,Rajesh,Khanna,9848022339,Delhi 004,Preethi,Agarwal,9848022330,Pune 005,Trupthi,Mohanthy,9848022336,Bhuwaneshwar 006,Archana,Mishra,9848022335,Chennai.
现在,使用 put 命令将文件从本地文件系统移动到HDFS,如下所示。(你也可以使用 copyFromLocal 命令。)
$ cd $HADOOP_HOME/bin $ hdfs dfs -put /home/Hadoop/Pig/Pig_Data/student_data.txt dfs://localhost:9000/pig_data/
使用 cat 命令验证文件是否已移入HDFS,如下所示。
$ cd $HADOOP_HOME/bin $ hdfs dfs -cat hdfs://localhost:9000/pig_data/student_data.txt
现在,可以看到文件的内容,如下所示。
15/10/01 12:16:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 001,Rajiv,Reddy,9848022337,Hyderabad 002,siddarth,Battacharya,9848022338,Kolkata 003,Rajesh,Khanna,9848022339,Delhi 004,Preethi,Agarwal,9848022330,Pune 005,Trupthi,Mohanthy,9848022336,Bhuwaneshwar 006,Archana,Mishra,9848022335,Chennai
你可以使用 Pig Latin 的 LOAD 运算符,从文件系统(HDFS / Local)将数据加载到Apache Pig中。
load语句由两部分组成,用“=”运算符分隔。在左侧,需要提到我们想要存储数据的关系的名称;而在右侧,我们需要定义如何存储数据。下面给出了 Load 运算符的语法。
Relation_name = LOAD 'Input file path' USING function as schema;
说明:
relation_name - 我们必须提到要存储数据的关系。
Input file path - 我们必须提到存储文件的HDFS目录。(在MapReduce模式下)
function - 我们必须从Apache Pig提供的一组加载函数中选择一个函数( BinStorage,JsonLoader,PigStorage,TextLoader )。
Schema - 我们必须定义数据的模式,可以定义所需的模式如下 -
(column1 : data type, column2 : data type, column3 : data type);
注意:我们加载数据而不指定模式。在这种情况下,列将被寻址为$01,$02,等...(检查)。
例如,我们使用 LOAD 命令,在名为学生的模式下在Pig中的 student_data.txt 加载数据。
首先,打开Linux终端。在MapReduce模式下启动Pig Grunt shell,如下所示。
$ Pig –x mapreduce
它将启动Pig Grunt shell,如下所示。
15/10/01 12:33:37 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL 15/10/01 12:33:37 INFO pig.ExecTypeProvider: Trying ExecType : MAPREDUCE 15/10/01 12:33:37 INFO pig.ExecTypeProvider: Picked MAPREDUCE as the ExecType 2015-10-01 12:33:38,080 [main] INFO org.apache.pig.Main - Apache Pig version 0.15.0 (r1682971) compiled Jun 01 2015, 11:44:35 2015-10-01 12:33:38,080 [main] INFO org.apache.pig.Main - Logging error messages to: /home/Hadoop/pig_1443683018078.log 2015-10-01 12:33:38,242 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /home/Hadoop/.pigbootup not found 2015-10-01 12:33:39,630 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost:9000 grunt>
现在,通过在Grunt shell中执行以下Pig Latin语句,将文件 student_data.txt 中的数据加载到Pig中。
grunt> student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt' USING PigStorage(',') as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );
以下是对上述说明的描述。
Relation name | 我们已将数据存储在学生(student)模式中。 | ||||||||||||
Input file path | 我们从HDFS的/pig_data/目录中的 student_data.txt 文件读取数据。 | ||||||||||||
Storage function | 我们使用了 PigStorage() 函数,将数据加载并存储为结构化文本文件。它采用分隔符,使用元组的每个实体作为参数分隔。默认情况下,它以“\t"作为参数。 | ||||||||||||
schema | 我们已经使用以下模式存储了数据。
|
注意: Load语句会简单地将数据加载到Pig的指定的关系中。要验证Load语句的执行情况,必须使用Diagnostic运算符,这将在后续的章节中讨论。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
FILTER 运算符用于根据条件从关系中选择所需的元组。语法下面给出了 FILTER 运算符的语法。grunt> Relation2_name = FILTER Relation1_name BY (condition);
Hadoop写文件的实现及要点有哪些?1.客户端将文件写入本地磁盘的 HDFS Client 文件中;2.当临时文件大小达到一个 block 大小时,HDFS client 通知 NameNode,申请写入文件;3.NameNode 在 HDFS 的文件系统中创建一_来自Hadoop 教程,w3cschool编程狮。
在Apache Pig中有以下String函数。S.N.函数 & 描述1ENDSWITH(string, testAgainst)验证给定字符串是否以特定子字符串结尾。2STARTSWITH(string, substring)接受两个字符串参数,并验证第一个字符串是否以第二个字符串开头。
Apache Pig提供了各种内置函数,即 eval,load,store,math,string,bag 和 tuple 函数。Eval函数下面给出了Apache Pig提供的 eval 函数列表。S.N.函数 & 描述1AVG()计算包内数值的平均值。
大数据时代,很多领域都应用了数据分析,这篇文章想要给大家分享的关于数据分析的类型模式,包括描述型,诊断型,预测型,指导型这四种。小编觉得是比较有趣的,感兴趣的朋友就继续往下看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008