使用库在Eclipse中运行pig时,部分文件为空

时间:2014-04-03 06:57:25

标签: java hadoop mapreduce apache-pig

我在mapreduce模式下运行了一个示例猪脚本,并且运行成功。

我的猪脚:

allsales = load 'sales' as (name,price,country);
bigsales = filter allsales by price >999;
sortedbigsales = order bigsales by price desc;
store sortedbigsales into 'topsales';

现在,我正在尝试在eclipse中实现它(目前我正在使用库运行)。

有疑问:猪本地模式意味着我们需要默认安​​装hadoop?

IdLocal.java:

public class IdLocal {
  public static void main(String[] args) {
    try {
     PigServer pigServer = new PigServer("local");
     runIdQuery(pigServer, "/home/sreeveni/myfiles/pig/data/sales");
    } catch (Exception e) {
    }
  }
  public static void runIdQuery(PigServer pigServer, String inputFile) 
                      throws IOException {

  pigServer.registerQuery("allsales = load '" + inputFile+ "' as (name,price,country);");
  pigServer.registerQuery("bigsales = filter allsales by price >999;");
  pigServer.registerQuery("sortedbigsales = order bigsales by price desc;");
  pigServer.store("sortedbigsales","/home/sreeveni/myfiles/OUT/topsalesjava");
  }
}

控制台显示我的成功,但我的部分文件是空的。 为什么会这样?

1 个答案:

答案 0 :(得分:0)

1)本地模式猪并不意味着你必须安装hadoop。你可以在没有hadoop和hdfs的情况下运行它。所有内容都将在您的计算机上执行单线程,默认情况下应该从本地文件系统读取/写入。

2)关于空输出,请确保您的输入文件存在于本地文件系统中,并且它具有“'价格”中的记录。大于999的字段。否则你可以将它们全部过滤掉。此外,pig默认为制表符分隔文件。您的inputFile标签是否分开?如果没有,那么您的架构定义将具有'名称'字段保存文件中的整行,并且'价格'和国家'将永远为空。

希望有所帮助