博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 Apache Pig 处理数据5
阅读量:5317 次
发布时间:2019-06-14

本文共 1562 字,大约阅读时间需要 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)。 显示了在 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

你可能感兴趣的文章
May It Be
查看>>
Python 统一动态创建多个model对应的modelForm类(type()函数)
查看>>
css选择器中:first-child与:first-of-type的区别
查看>>
do-while语句
查看>>
条件编译
查看>>
Activity基本跳转
查看>>
ionic图标地址
查看>>
第6.3节 Python动态执行之动态编译的compile函数
查看>>
springboot 的dataSource 一些配置
查看>>
NET定时器
查看>>
Java语言基础-IO流(输入输出流) 字节流、转换流
查看>>
三十分钟掌握STL
查看>>
CountUp.js 数字跳转效果小插件
查看>>
Alluxio 安装与配置
查看>>
BZOJ2982 combination
查看>>
HTTP2.0探究
查看>>
nginx 配置tp3.2
查看>>
linux php5.6 提示 could not find driver
查看>>
发一个自己封装的PNG透明图片类。
查看>>
练习题 - 小明花费
查看>>