所以,
import java.io.IOException;
import java.util.Properties;
import org.apache.pig.ExecType;
import org.apache.pig.PigServer;
public class CommitPig {
public static void main(String[] args)
{
try{
String pigScript = "category_count.pig";
pigScriptReader psReader = new pigScriptReader();
psReader.readPigScript( pigScript );
} catch ( IOException e){
e.printStackTrace();
}
try{
Properties props = new Properties();
props.setProperty("fs.default.name", "<server id>");
props.setProperty("mapred.job.tracker.http.address", "<server id>");
props.setProperty("<server id> ");
PigServer pigServer = new PigServer( ExecType.MAPREDUCE, props);
runIdQuery(pigServer,"<input location>");
} catch ( Exception e){
e.printStackTrace();
}
}
private static void runIdQuery(PigServer pigServer, String inputFile) throws IOException {
pigServer.registerQuery("A = load '" + inputFile + "' using PigStorage(' ');");
pigServer.registerQuery("B = filter A BY $0 == 'testing';");
pigServer.store("B","id.out");
}
}
这是我目前正在运行的代码。
我正在尝试使用 Java 从本地连接到集群服务器,以运行 pig 查询。
它给了我错误
ERROR 4010: Cannot find hadoop configurations in classpath (neither hadoop-site.xml nor core-site.xml was found in the classpath)
我尝试按照 apache 的说明在集群中设置类路径。
在 Mapreduce 模式下运行 Pig 脚本 要在 mapreduce 模式下运行 Pig 脚本,请执行以下操作:
将 PIG_CLASSPATH 环境变量设置为集群配置目录的位置(包含 core-site.xml、hdfs-site.xml 和 mapred-site.xml 文件的目录):
export PIG_CLASSPATH=/mycluster/conf
将 HADOOP_CONF_DIR 环境变量设置为集群配置目录的位置:
export HADOOP_CONF_DIR=/mycluster/conf
但是我仍然遇到同样的错误。我在这里理解有什么问题吗?有人可以帮我理解这里到底是什么问题以及如何解决它?
谢谢 !