簡體   English   中英

Cloudera-Oozie無法從工作流.xml獲取屬性

[英]Cloudera - Oozie cannot get properties from workflow.xml

我正在嘗試練習oozie工作流程。 我的做法是從ftp獲取文件並將其上傳到cloudera-HDFS。

以下是我的Java代碼:

public class UploadHDFS extends Configured implements Tool {
    private static final Logger LOGGER = LoggerFactory.getLogger(UploadHDFS.class);
    public static void main(String[] args) throws Exception {
        int res = ToolRunner.run(new Configuration(), new UploadHDFS(), args);
        System.exit(res);
    }

    @Override
    public int run(String[] strings) throws Exception {
        FTPClient client = new FTPClient();
        InputStream ins = null;
        try {

            Configuration conf = getConf();

            System.out.println("------------%%+++++++++++++++++++---------------");
            for (Map.Entry<String, String> entry : conf) {
                System.out.printf("%s=%s\n", entry.getKey(), entry.getValue());
            }
            System.out.println("------------%%++++++++++++-----------");

            String host = conf.get("ftp.host.address").toString();
            String port = conf.get("ftp.port").toString();
            ....
            ....
      return 0;  
    }
}

另外,我已經配置了workflow.xml。 見下文:

<workflow-app name="XXXXXX_test" xmlns="uri:oozie:workflow:0.4">
<start to="ftp_download_file"/>
<action name="ftp_download_file">
<java>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${nameNode}/user/admin/XXXXXX_test/B"/>
</prepare>
<configuration>
<property>
<name>ftp.host.address</name>
<value>192.168.1.158</value>
</property>
<property>
<name>ftp.port</name>
<value>21</value>
</property>
</configuration>
<main-class>UploadHDFS</main-class>
<file>workflow.xml#workflow.xml</file>
</java>
<ok to="merger_file"/>
<error to="kill"/>
</action>    
</workflow-app>

但是,我不確定為什么無法從workflow.xml獲取屬性。 該系統為行彈出NullPointerException:

字符串主機= conf.get(“ ftp.host.address”)。toString(); 字符串端口= conf.get(“ ftp.port”)。toString();

你能給我一些想法嗎?

謝謝!!

通過系統變量“ oozie.action.conf.xml”傳遞的Oozie配置位置,請使用Java Action示例代碼:

public class UploadHDFS {
public static void main(String[] args) throws Exception {
    new UploadHDFS().execute();
}

public void execute() {
    String configurationLocation = System.getProperty("oozie.action.conf.xml");
    Path localConfigurationPath = new Path(configurationLocation);
    Configuration configuration = new Configuration();
    configuration.addResource(localConfigurationPath);
    // .. continue here 
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM