使用Eclipse+Java配置Pig开发环境

栏目: Java · 发布时间: 5年前

内容简介:自从开始使用Eclipse+Maven来配置Java的开发环境并体验到了Maven的强大和方便以后。在之后学习Hadoop的过程中,我都尽量避免使用终端配置运行环境。本文将介绍如何配置Eclipse在Pig中的开发环境。若还未使用过Maven配置Hadoop开发环境,可以参考我的另一篇博客Apache Pig 的官方

自从开始使用Eclipse+Maven来配置 Java 的开发环境并体验到了Maven的强大和方便以后。在之后学习Hadoop的过程中,我都尽量避免使用终端配置运行环境。

本文将介绍如何配置Eclipse在Pig中的开发环境。若还未使用过Maven配置Hadoop开发环境,可以参考我的另一篇博客

开发环境

  • 系统:MacOS 10.14.1
  • Hadoop:2.7.0
  • Java:1.8.0
  • Eclipse:4.6.2
  • Maven: 3.3.9

Pig

下载地址

Apache Pig 的官方 下载地址

由于本文介绍的是用Eclipse开发,Maven配置,因此不需要从此网站下载。

确定版本

在下载前需要确定版本。

由于不同版本的Pig支持不同的版本的Hadoop,如下图所示。因此在开始配置前,需要确定自己的Hadoop版本并选择合适的Pig版本。

我使用的是Hadoop 2.7.0 只有Pig 0.17.0 可以支持。所以我选择0.17版本。

使用Eclipse+Java配置Pig开发环境 其余版本介绍

配置jar包

使用Java在Eclipse运行Pig代码,需要antlr,pig和pigunit包,因此需要在Maven Project的pom.xml添加以下依赖。

由于许多不可抗力,使用Apache原生的pig版本时一直无法配置成功,因此我选择Cloudera公司的发行版本,所以需要添加 cloudera的资源库

<repositories>
    <repository>
        <id>cloudera</id>
        <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
</repositories>

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.antlr/antlr4 -->
    <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4</artifactId>
        <version>4.7.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.pig</groupId>
        <artifactId>pig</artifactId>
        <version>0.17.0-cdh6.0.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.pig</groupId>
        <artifactId>pigunit</artifactId>
        <version>0.17.0-cdh6.0.0</version>
    </dependency>
</dependencies>

创建脚本

Apache Pig 提供了后缀名为脚本方式来处理数据。脚本是以后缀名为 .pig 的文本文件进行保存。

以下是一个pig脚本代码,统计单词的数量,将该脚本保存在src文件夹内

wordcount.pig

A = load 'src/main/resources/pigData/sample.data';
B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word;
C = group B by word;
D = foreach C generate COUNT(B), group;
dump D;

sample.data 数据文件

Johny, Johny!
Yes, Papa
Eating sugar?
No, Papa
Telling lies?
No, Papa
Open your mouth!
Ha! Ha! Ha!

使用Java运行

Pig 有两种运行模式: Local 模式和 MapReduce 模式。在Java中,可以通过 org.apache.pig.ExecType 进行设置

PigServer

PigRunner.java

import java.util.Properties;

import org.apache.pig.ExecType;
import org.apache.pig.PigServer;
public class PigRunner
{
	public static void main(String[] args) throws Exception
	{
		// MapReduce 模式
		Properties props = new Properties();
		props.setProperty("fs.default.name", "hdfs://localhost:9000");
//		props.setProperty("mapred.job.tracker", "http://localhost:50070");
		PigServer pigServer = new PigServer(ExecType.MAPREDUCE, props);
		pigServer.registerScript("src/main/java/pig/wordcount.pig");

		// local 模式
		PigServer pigServer1 = new PigServer(ExecType.LOCAL);
		pigServer1.registerScript("src/main/java/pig/wordcount.pig");
	}
}

PigTest

PigTest提供了对Pig脚本所得的结果进行单元测试。

AppTest.java

import org.apache.pig.pigunit.PigTest;

import junit.framework.*;

public class AppTest extends TestCase
{
	public void testStudentsPigScript() throws Exception
	{
		PigTest pigTest = new PigTest("src/main/java/pig/wordcount.pig");
		pigTest.assertOutput("D", new String[] { "(2,No)", "(3,Ha!)", "(1,Yes)", "(1,Open)", "(3,Papa)", "(1,your)",
				"(1,Johny)", "(1,lies?)", "(1,Eating)", "(1,Johny!)", "(1,mouth!)", "(1,sugar?)", "(1,Telling)"});
		
	}
}

下图为上述文件在Java Project中的路径。可供读者进行参考

使用Eclipse+Java配置Pig开发环境

以上所述就是小编给大家介绍的《使用Eclipse+Java配置Pig开发环境》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

自流量生活

自流量生活

斯科特·福克斯(Scott Fox) / 王晶晶 / 中信出版社 / 2018-8-1

一位远嫁他国的平凡女孩,陌生的环境、陌生的语言……她不得不从头学起。有写作爱好的她在网络上记录着她学习生活中的小故事。神奇的是,越来越多的人联系她,有人要付钱看新的故事,还有人想把这些故事拍成电视短片。她是怎么做到的? 这本书将告诉你如何利用互联网打造自己的“流量”生活,使你既能获取收入,又能以自己喜欢的方式过一生。在阅读这本书的过程中,你可能会找到自己喜欢的生活方式,了解成功打造自身“流量......一起来看看 《自流量生活》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码