eclipse中运行pig

原文 翻译自:https://abhijitsureshshingate.wordpress.com/2013/07/08/code-debug-test-apache-pig-scripts-using-eclipse-on-windows/

注意:该文章发表于2011年,不过我使用的软件如下,依然能够运行:

    pig 0.12 (pig-0.12-CDH5.2.0)

    hadoop 2.5

以下是原文翻译:

   一  先决条件

  1. 安装了Eclipse Juno 或以上版本
  2. 安装好了m2eclipse 插件   (这部分需要自己找下,可以参考 http://doc.okbase.net/congcong68/archive/119982.html)
  3. JDK 1.6 以上版本
  4. 安装Cygwin 1.7.5以上版本(我安装了,但是没有设置,也用不了。但是好像不影响pig)
  5. <CYGWIN_HOME>/bin 加入PATH环境变量。其中CYGWIN_HOME是cygwin的安装目录。

 二 安装步骤

1      打开eclipse ,File-->Project

01 Createnewproject3. 从New Project 中选择Maven project,下一步

02 createmavenproject

4. 在 New Maven Project视图中,点击下一步

03 createmavenproject2

5. 选择t “maven-archtype-quicktype” 作为 project archtype 点击下一步

04 selectarchtype

6.输入合适的 Group Id, Artifact Id, Version 和Package name 点击Finish

05 createprojectformfill

7. 以上将创建一个Maven 工程,其工程结构视图如下,并包含自动生成的以下文件 App.java 以及相对应的AppTest.java 文件 AppTest.java 包含了 junit 测试代码. 同时产生一个 pom.xml. 文件。

06 eclipsemavenproject

8. 双击 pom.xml 文件,打开编辑器 POM editor.

07 openpomfile

08 switchtopomtextmode

10. 加入 cloudera repository信息到pom.xml. 我们需要一些重要的依赖  (比如  pig, pigunit 和hadoop). 这些依赖都存在于 maven artifacts 的 cloudera’s maven 库中.

  <repositories>
  <repository>
  <id>cloudera-releases</id>
  <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
  <releases>
  <enabled>true</enabled>
  </releases>
  <snapshots>
  <enabled>false</enabled>
  </snapshots>
  </repository>
  </repositories>

09 addclouderarepository

11. 添加依赖,比如pig, pigunit, hadoop 和一些其他的比如 antlr, jackson等。我们将在eclipse中调试pig。 因而我们需要pig 和 pigunit. 由于pig 需要hadoop-core 才能运行, 我们因而又需要添加hadoop-core的依赖

注意:这些依赖的版本,需要按照自己的版本来配置。如果使用CDH对应的pig,hadoop。可以参考

  <dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-core</artifactId>
  <version>0.20.2-cdh3u6</version>
  </dependency>
  <dependency>
  <groupId>org.apache.pig</groupId>
  <artifactId>pigunit</artifactId>
  <version>0.10.0-cdh3u4</version>
  </dependency>
  <dependency>
  <groupId>org.apache.pig</groupId>
  <artifactId>pig</artifactId>
  <version>0.10.0-cdh3u4</version>
  </dependency>
  <dependency>
  <groupId>org.antlr</groupId>
  <artifactId>antlr</artifactId>
  <version>3.5</version>
  </dependency>
  <dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-mapper-asl</artifactId>
  <version>1.9.12</version>
  </dependency>
  <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
  </dependency>
view raw pigdependecy.xml hosted with  ❤ by  GitHub

10 addpigdependencies

12. 由于调试的时候需要 源代码 和 javadoc 。为了下载这些源代码和javadoc文件需要设置 Window > Preferences > Maven.

11 windowspreferences

13. 勾选 Download Artifact Sources 和Download Artifact JavaDoc.点击 Apply 和 OK. 

12 downloadsourcesandjavadoc

14. 右键main 文件夹(注意图中哪个main) 然后在该目录下创建一个新目录

13 createnewfolder

15. 新目录命名为 resources.

14 createresourcesfolder

16. 在 resources 文件夹中手动创建两个文件,分别为wordcount.pig 和sample.data. 在wordcount.pig 文件中我们会写入pig代码,该代码会统计文件sample.data中的词频.

15 createnewfile

17. 将以下数据加入到sample.data。

  Johny, Johny!
  Yes, Papa
  Eating sugar?
  No, Papa
  Telling lies?
  No, Papa
  Open your mouth!
  Ha! Ha! Ha!
view raw sample.data hosted with  ❤ by  GitHub

17 createinputdata

18. 将以下代码加入wordcount.pig。

  A =load 'src/main/resources/sample.data';
  B =foreach A generate flatten(TOKENIZE((chararray)$0))as word;
  C =group B by word;
  D =foreach C generate COUNT(B),group;
  dumpD;
view raw wordcount.pig hosted with  ❤ by  GitHub

18 addpigcode

19. 现在加入 pig unit 测试用例来测试和调试 twordcount.pig.

20. 编辑 AppTest.java 文件

19 opentestcase

21. 打开AppTest.java 文件,移除所有方法代码 ,然后添加A testWordCountScript方法,如下

  publicvoid testStudentsPigScript() throws Exception {
  PigTest pigTest= new PigTest("src/main/resources/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)", });
  }
view raw AppTest.java hosted with  ❤ by  GitHub

25 addtestcode

22. 设置 大一点的内存,以便运行pig脚本测试

23. 选择 AppTest.java 文件,然后 菜单中  Run > Run Configurations …

20 testcaserunconfiguration

24. 在 Run Configurations 视图中双击 JUnit 来给AppTest创建一个 Run Configuration

22 doubleclickjunit

25. 调整VM 参数 添加 “-Xmx1024m” 设置 JVM 到 1Gb.

23 jvmheapsize

26. 在此选择 AppTest.java文件.  Run > Debug Configurations …

25.1 debugconfig

27. 选择AppTest并点击Debug

25.2 debugtest

28. 测试用例应当执行成功,然后会看到绿色的进度条(下图在左上角,我的在eclipse 底部)

26 executetest

29. 假若你想调试 pig 内置的 COUNT UDF ,使用快捷键Ctrl+Shift+T 来打开一个类,在打开的 Open Type 视图框中输入COUNT 将会显示所有package org.apache.pig.builtin包下与COUNT相关的类. 选择下图中的 COUNT类。

26 opencountudf

30. 由于我们让项目添加了 jar的源代码,因而 COUNT UDF的源代码就出现了

27 addinitialdebugpoint

31. 由于COUNT 是一个聚合类的UDF, 它包含了初始化、中间态、和最终状态的实现。我们只需要将调试断点 添加到包含了这三个状态的执行函数。

29 addfinalbedugpoint

32. 再次选择AppTest.java,菜单 Run > Debug Configurations …

25.1 debugconfig

33. 选择 AppTest 并点击 Debug

25.2 debugtest

34. 将会出现对话框 “Confirm Perspective Switch” .点击Yes

30 remembermydecision

35. 然后你就可以看到这些在编辑器中激活的断点了。现在使用 eclipse的debug,你就可以调试完整的COUNT UDF代码了。

31 debugpoint

--------------------------------------------------------------分割线-(下文是我自己的测试结果)------------------------------------------------------

三   我的安装测试

  1  以下是其中的 pom.xml文件。读者可以按照自己的版本对应填写

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>pig.xiatao</groupId>
  <artifactId>pig_envirnoment</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>pig_envirnoment</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
<dependencies>
<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
</dependency>
<dependency>
	<groupId>org.apache.hadoop</groupId>
	<artifactId>hadoop-core</artifactId>
	<version>2.5.0-mr1-cdh5.2.0</version>
</dependency>
<dependency>
	<groupId>org.apache.pig</groupId>
	<artifactId>pigunit</artifactId>
	<version>0.12.0-cdh5.2.0</version>
</dependency>
<dependency>
	<groupId>org.apache.pig</groupId>
	<artifactId>pig</artifactId>
	<version>0.12.0-cdh5.2.0</version>
</dependency>
<dependency>
	<groupId>org.antlr</groupId>
	<artifactId>antlr</artifactId>
	<version>3.5</version>
</dependency>
<dependency>
	<groupId>org.codehaus.jackson</groupId>
	<artifactId>jackson-mapper-asl</artifactId>
	<version>1.9.13</version>
</dependency>

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>3.8.1</version>
	<scope>test</scope>
</dependency>
<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.7</version>
    <scope>system</scope>
    <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
  </dependencies>
  <repositories>
	<repository>
		<id>cloudera-releases</id>
		<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>
</repositories>

</project>
其中 hadoop-core,pigunit,pig的版本设置。对于使用Cloudera Hadoop(CDH版本hadoop的)可以参考 这个链接  pig CDH maven版本对应号 。我在pom.xml中的配置,是从该网页中参考如下:



 2 运行结果界面如下


  上图给看到的是 upa_app_search_use.pig这个脚本的运行结果。其实际是在 AppTest.java这个类中执行的


其中的PigTest 这个类需要 import倒入。

注意:pig脚本中的参数最好直接写在 脚本里,通过后面传入参数好像不行。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值