我是hadoop的新手,现在我只用一个sqoop动作来测试简单的工作流程.如果我使用普通值 - 而不是全局属性,它可以工作.
但是,我的目标是job-xml在全局部分的tag中引用的文件中定义一些全局属性.
经过长时间的斗争和阅读许多文章,我仍然无法使其工作.我怀疑一些简单的事情是错误的,因为我发现文章暗示这个功能正常.
希望你能给我一个提示.
简而言之:
dbserver,dbuser并dbpassword在中定义/user/dm/conf/environment.xml/user/dm/jobs/sqoop-test/workflow.xmlEL_ERROR说法,即dbserver变量无法解析这是详细信息:
我正在使用单节点上安装的Cloudera 5.7.1发行版.
environment.xml文件已上传到hdfs到/user/dm/conf文件夹中.这是内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>dbserver</name>
<value>someserver</value>
</property>
<property>
<name>dbuser</name>
<value>someuser</value>
</property>
<property>
<name>dbpassword</name>
<value>somepassword</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
workflow.xml文件已上传到/user/dm/jobs/sqoop-test-job.这是内容:
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.4" name="sqoop-test">
<global>
<job-xml>/user/dm/conf/env.xml</job-xml>
</global>
<start to="get-data"/>
<action name="get-data">
<sqoop xmlns="uri:oozie:sqoop-action:0.3">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${outputRootPath}"/>
</prepare>
<arg>import</arg>
<arg>--connect</arg>
<arg>jdbc:sqlserver://${dbserver};user=${dbuser};password=${dbpassword}</arg>
<arg>--query</arg>
<arg>select col1 from …Run Code Online (Sandbox Code Playgroud)