在java中对整个脚本运行pig explain命令
我试图找到在java中对整个pig脚本运行explain命令的方法。 我使用的是PigServer,但它只提供对单个查询(别名)的解释,而不是整个脚本。 有没有一种方法可以做到:在java中对整个脚本运行pig explain命令,java,apache-pig,sql-execution-plan,Java,Apache Pig,Sql Execution Plan,我试图找到在java中对整个pig脚本运行explain命令的方法。 我使用的是PigServer,但它只提供对单个查询(别名)的解释,而不是整个脚本。 有没有一种方法可以做到: $ pig -x local -e 'explain -script Temp1/TPC_test.pig -out explain-out9.txt' 但是从我的Java代码?可以使用org.apache.pig.PigServer从Java程序运行pig脚本: PigServer pigServer = new
$ pig -x local -e 'explain -script Temp1/TPC_test.pig -out explain-out9.txt'
但是从我的Java代码?可以使用org.apache.pig.PigServer从Java程序运行pig脚本:
PigServer pigServer = new PigServer(ExecType.MAPREDUCE);
pigServer.registerScript("scripts/test.pig");
Requires 'pig.properties' on classpath.
fs.default.name=hdfs://<namenode-hostname>:<port>
mapred.job.tracker=<jobtracker-hostname>:<port>
Or pass an instance of java.util.Properties to PigServer constructor.
Properties props = new Properties();
props.setProperty("fs.default.name", "hdfs://<namenode-hostname>:<port>");
props.setProperty("mapred.job.tracker", "<jobtracker-hostname>:<port>");
PigServer pigServer = new PigServer(ExecType.MAPREDUCE, props);
PigServer-PigServer=新的PigServer(ExecType.MAPREDUCE);
registerScript(“scripts/test.pig”);
类路径上需要“pig.properties”。
fs.default.name=hdfs://:
mapred.job.tracker=:
或者将java.util.Properties的实例传递给PigServer构造函数。
Properties props=新属性();
props.setProperty(“fs.default.name”,“hdfs://:”;
setProperty(“mapred.job.tracker”,“:”);
PigServer PigServer=新的PigServer(ExecType.MAPREDUCE,props);
希望这有助于实现此目的。例如: 我发现需要以下运行时依赖项来避免NoClassDefFoundError:
- 当然,您也可以使用grunt外壳!(我总是忘记这件事。)
在我们的站点上,我们正在使用一个启动器脚本来准备一个pig调用命令,如下所示:
$ pig -p param1=foo -p param2=bar script.pig
您可以在grunt shell中使用explain-script
:
- 调用
pig
- 用
explain
$ pig
grunt> explain -param param1=foo -param param2=bar script.pig
问题是我需要解释命令返回的执行计划。。。你知道如何在整个脚本中使用Java语言吗?太好了!我想这就行了!谢谢虽然我想从内部结构(字符串或其他)读取脚本,但我会设法处理。有没有办法使用PigRunner将输出消息转移到文件或自定义记录器?您可以重定向标准输出流,请参阅:如何将参数作为arg传递给PigRunner的run方法?我想给出一些变量值,通常在从命令行运行pig脚本时,我们会像-p paramname=paramvalue那样执行。
$ pig
grunt> explain -param param1=foo -param param2=bar script.pig