使用 Apache Pig 处理数据5

使用 Apache Pig 从大数据集中获得所需的信息

Apache Pig 是一个高级过程语言,适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用。本文将探索 Pig 背后的语言,并在一个简单的 Hadoop 集群中发现其用途。

Hadoop 的普及和其生态系统的不断壮大并不令人感到意外。Hadoop 不断进步的一个特殊领域是 Hadoop 应用程序的编写。虽然编写 Map 和 Reduce 应用程序并不十分复杂,但这些编程确实需要一些软件开发经验。Apache Pig 改变了这种状况,它在 MapReduce 的基础上创建了更简单的过程语言抽象,为 Hadoop 应用程序提供了一种更加接近结构化查询语言 (SQL) 的接口。因此,您不需要编写一个单独的 MapReduce 应用程序,您可以用 Pig Latin 语言写一个脚本,在集群中自动并行处理与分发该脚本。

Pig Latin 示例

让我们从一个简单的 Pig 示例开始介绍,并剖析该示例。Hadoop 的一个有趣的用法是,在大型数据集中搜索满足某个给定搜索条件的记录(在 Linux® 中被称为 grep)。清单 1 显示了在 Pig 中实现该过程的简单性。在所显示的三行代码中,只有一行是真正的搜索。第一行只是将测试数据集(消息日志)读取到代表元组集合的包中。用一个正则表达式来筛选该数据(元组中的惟一条目,表示为 $0 或 field 1),然后查找字符序列 WARN。最后,在主机文件系统中将这个包存储在一个名为 warnings 的新文件中,这个包现在代表来自消息的包含 WARN 的所有元组。

清单 1. 一个简单的 Pig Latin 脚本
messages = LOAD 'messages';
warns = FILTER messages BY $0 MATCHES '.*WARN+.*';
STORE warns INTO 'warnings';

如您所见,这个简单的脚本实现了一个简单的流,但是,如果直接在传统的 MapReduce 模型中实现它,则需要增加大量的代码。这使得学习 Hadoop 并开始使用数据比原始开发容易得多。

现在让我们更深入地探讨 Pig 语言,然后查看该语言的一些功能的其他示例。

示例演示:

1、准备数据

  messages文件 内容(含有两条WARN的)

  This is WARNING message1

  This is INFOING message2

  This is WARNING message3

2、上传数据

  hadoop dfs -put messages /input
3、运行pig进入grunt

  grunt> messages = load '/input/messages';

  grunt> warns = filter messages by $0 matches '.*WARN+.*';
  grunt> dump warns

  
    (This is WARNING message1)
    (This is WARNING message3)

  grunt> store warns into '/output/wranings'; 保存进入文件(位于hdfs上)

 

  参考:http://www.ibm.com/developerworks/cn/linux/l-apachepigdataquery/index.html 

 

转载于:https://www.cnblogs.com/jsunday/p/3789690.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么接吻需要闭眼睛?

1 你用上5G了吗?它已经用上了▼2 戴口罩的好处又增加了▼3 原来如此...▼4 哈哈哈哈▼5 露脐装的正确打开方式(素材源于网络,侵删)▼6 火鸡面到底有多辣▼7 孩子你要完了(素材来源网络,侵删&#xff0…

最近要出绩效了

上周我们公司的绩效面谈全部结束了,每年到这个时间点就是打绩效的时候了,对于职场打工人来说绩效绝对是最重要的事情之一,原因也很简单:奖金、晋升、涨薪都和它有关系。比如下面这个美团员工在脉脉上的自曝就很凄凉:互…

C++类和new、delete操作符和堆和栈内存的分配

如果你是Java、C#、PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象。在C中,你可以像定义变量一样来创建对象,如: Student stu; //对象已被实例化,已分配内存空间&…

从B 树、B+ 树、B* 树谈到R 树

作者:July、weedge、Frankie。编程艺术室出品。 说明:本文从B树开始谈起,然后论述B树、B*树,最后谈到R 树。其中B树、B树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。 出…

在CentOS中安装gcc配置c语言开发环境(转)

From:http://hsl46346.blog.163.com/blog/static/17764050201062074955358/ From: CentOS 5.4 下gcc和gcc-c的光盘 rpm 安装方式 From: centos 安装 java CentOs是linux系统的一种,只要该操作系统安装了gcc软件包,就可以在linux操作系统中进行C语言程序设…

纯IPv6环境App适配的坑

来源:伯乐在线专栏作者 - MrPeak 链接:http://ios.jobbole.com/86580/ 苹果从2016年6月1号开始,强制所有app必须支持纯IPv6的网络环境。这项举措将对IPv6的普及起到一定的推动作用,也体现了Apple作为国际大厂的担当。 大部分App由…

使用Visual Studio 创建新的Web Part项目

使用Visual Studio 创建新的Web Part项目 Web Part是你将为SharePoint创建的最常见的对象之一。它是平台构建的核心基块。1. 管理员身份打开Visual Studio,新建空白SharePoint项目。命名WroxSPProject,点击确定。部署为场解决方案,点击完成。…

聊一聊Yarp结合Nacos完成服务发现

背景 Yarp 这个反向代理出来后,相信还是有不少人在关注的。在 Yarp 中,反向代理的配置默认也是基于配置文件的,也有不少大佬已经把这个配置做成了数据库配置可视化界面。仔细想了想,做成数据库配置,好像只是便于配置的…

相亲对象能有多油腻......

1 冰起来再烧(素材来源网络,侵删)▼2 还没从年假清醒的我(素材来源网络,侵删)▼3 孙悟空为啥没被人收去当坐骑(素材来源网络,侵删)▼4 成年人的潜台词(素材…

C++之char*,const char*和string的相互转换

1. string转const char*string s "abc";const char* c_s s.c_str(); 2. const char*转string直接赋值即可const char* c_s "abc";string s(c_s); 3. string转char*string s "abc";char* c;const int len s.length();c new char[len1];strc…

教你如何迅速秒杀掉:99%的海量数据处理面试题

教你如何迅速秒杀掉:99%的海量数据处理面试题 作者:July 出处:结构之法算法之道blog 前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲…

poj 1986 Distance Queries

LCA 题意:LCA模板题,输入n和m,表示n个点m条边,下面m行是边的信息,两端点和权,后面的那个字母无视掉,没用的。接着k,下面k个询问lca,输出即可 有人说要考虑不连通的情况&a…

【.NET 遇上 GraphQL】 ChilliCream 平台介绍

ChilliCreamhttps://chillicream.com/https://github.com/ChilliCream/hotchocolateChilliCream 平台包含了四个产品, Hot Chocolate, Banana Cake Pop, Strawberry Shake, 平台提供开发人员工具和服务以加快整个开发过程。Hot ChocolateHot Chocolate 是 .NET 平台下的一个开源…

.NET 的 WebSocket 开发包比较

编者按 本文出现在第三方产品评论部分中。在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品。请会员报告任何垃圾信息或广告。 Web项目常常需要将数据尽可能快地推送给客户,必要时无需等待客户端请求。对于与用户之间…

《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX

《CMake实践》笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX 《CMake实践》笔记三:构建静态库与动态库 及 如何使用外部共享库和头文件 四、更好一点的Hello World 没有最好,只有更好…

14年前,林国强院士发现自己学生论文无法重复后,是这样处理的

全世界只有3.14 % 的人关注了爆炸吧知识本文转自:iNature让我们把时间拨回至 2007 年 3 月,当年,一封以林国强院士的名义发表的公开信,在网络上流传。信中披露,林院士发现自己的一名博士生发表在权威期刊《美国化学会志…

C++ char[] 与 string 转换

处理档案资料,最常使用 char[] 或 string 来储存字串,前者是 字元阵列 ,为C所拥有,当然C也可以使用;而后者是C独有的 字串类别 ,可以产生字串物件。在使用C处理字串时,时常会char[]和string互转…

支持向量机通俗导论(理解SVM的三层境界)

支持向量机通俗导论(理解SVM的三层境界) 作者: July ; 致谢: pluskid、 白石、J erryLead。出处:结构之法算法之道 blog 。 前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的&#…

WPF 实现加速小火箭~

WPF开发者QQ群&#xff1a; 340500857由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS&#xff1a;有更好的方式欢迎推荐。01—代码如下一、创建 SpeedRocketsExample.xaml 代码如下。<Window x:Class"WPFDevelopers…

第二十四天 多维数组

经过前面对一维数组和二维数组的学习&#xff0c;我们充分的掌握了数组的定义和使用&#xff0c;接下来我们该学习的是&#xff1a;多维数组。比较简单的方法&#xff0c;想要提高数组的维数只要在声明的时候在索引多加一个中括号即可。比如&#xff1a;我们要声明三维数组那么…