- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 hadoop 的新手,现在我正在测试仅使用单个 sqoop 操作的简单工作流。如果我使用纯值而不是全局属性,它会起作用。
然而,我的目标是在 job-xml
中引用的文件中定义一些全局属性。全局部分中的标记。
经过长时间的斗争和阅读很多文章,我仍然无法让它工作。我怀疑一些简单的事情出了问题,因为我发现有文章表明此功能可以正常工作。
希望你能给我一个提示。
简而言之:
dbserver
, dbuser
和 dbpassword
在 /user/dm/conf/environment.xml
中定义/user/dm/jobs/sqoop-test/workflow.xml
中引用了这些属性EL_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>
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 table where $CONDITIONS</arg>
<arg>--split-by</arg>
<arg>main_id</arg>
<arg>--target-dir</arg>
<arg>${outputRootPath}/table</arg>
<arg>-m</arg>
<arg>1</arg>
</sqoop>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Sqoop-test failed, error message[${wf:errorMessage()}]</message>
</kill>
<end name='end'/>
</workflow-app>
现在,我从命令行执行 oozie 工作流:
sudo -u dm oozie job --oozie http://host:11000/oozie -config job-config.xml -run
其中我的job-config.xml如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
<property>
<name>nameNode</name>
<value>namenode:8020</value>
</property>
<property>
<name>jobTracker</name>
<value>jobtracker:8021</value>
</property>
<property>
<name>oozie.wf.application.path</name>
<value>/user/dm/jobs/sqoop-test-job/workflow.xml</value>
</property>
<property>
<name>outputRootPath</name>
<value>/user/dm/data/sqoop-test</value>
</property>
</configuration>
最佳答案
好吧,你犯了两个大错误。
1. 让我们从快速解读 Oozie 文档 (V4.2) 的某些部分开始
Workflow Functional Specification
<global>
元素换句话说:Sqoop 操作是一个插件 就 Oozie 服务器而言。它不支持 100% 的“较新”功能,包括 <global>
工作流模式 V0.4 中引入的东西
2. 您不了解属性 和参数 之间的区别——我不怪您,Oozie 文档很困惑而且令人困惑。
参数被Oozie用于在属性、命令等中运行文本替换。您将它们的值定义为文字,或者在提交时使用 -config
参数,或在 <parameters>
工作流级别的元素。我所说的“字面意思”是指您不能在另一个参数中引用一个参数。该值只是不可变的文本,按原样使用。
Properties 是 传递给 Oozie 启动的作业的 Java 属性。您可以在提交时使用 -config
设置它们argument -- 是的,这是一团糟,Oozie 解析器必须找出哪些参数具有众所周知的属性名称,哪些只是参数 -- 或者在 <global>
中工作流元素 -- 但它们不会在所有“扩展”中传播,因为您已经发现了困难的方法 -- 或在 <property>
中使用 <job-xml>
定义的操作元素或在 XML 文件中元素,在全局工作流级别或本地操作级别。
需要注意两点:
<job-xml>
中文件必须是文字,因为 Oozie 无法访问它们(它只是在运行时将文件内容传递给 Hadoop Configuration
构造函数)这对你意味着什么?那么,您的脚本告诉 Oozie 在运行时通过 <job-xml>
将“隐藏”属性 传递给运行 Sqoop 作业的 JVM。 .
但是您期望 Oozie 解析一个参数 列表并在编译时使用它们来定义一些属性。那不会发生。
关于hadoop - OOZIE:全局作业 xml 中引用的文件中定义的属性在 workflow.xml 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38337362/
这似乎比我最初猜测的更复杂。我有一个工作流程需要在代码中启动另一个工作流程。这是怎么做到的?我是否必须首先获取对当前工作流实例的 WorkflowRuntime 的引用? 最佳答案 我认为Invoke
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
需要有关实现简单配额系统的最佳做法的指导 我想限制成员可以将自定义内容类型(称为 token )添加到他们的成员文件夹的次数(我还创建了一个自定义成员文件夹)。 用例(限制成员可添加的 token 数
我最近发布了一个有关在Web应用程序中运行Windows Workflow的问题。当然,这是一个技术性很强的问题,其中包含ManualWorkflowSchedulerService,HandleEx
今天,我接受了“Microsoft Workflow Foundation”的培训。 虽然我认为这个想法很巧妙,但我仍然将其视为概念证明,而不是现实生活中的解决方案。无需键入一行代码(或只键入其中的几
我在WF4上遇到了一个非常奇怪的问题:当我使用Switch Activity 并决定字符串变量的值时,WF以某种方式将WF的参数视为字符串,而不是变量的名称。因此,我得到了不正确的结果。复制步骤:-创
WWF 能否处理同时“主动”并行处理数十条记录的高吞吐量场景? 我们希望构建一个每小时处理几千条记录的工作流程。每条记录最多需要一分钟来处理,因为它会进行外部 Web 服务调用。 我们正在测试 Win
在我的项目中,我有一个在多个实体上运行以完成业务交易的工作流程。表示工作流逻辑的最佳位置是什么?目前我只是创建一个“XXXManager”,它负责与实体对象协作以完成业务交易。还有其他选择吗? 最佳答
我想编写一个工作流应用程序,将链接路由到文档。路由基于机器而不是用户,因为我不知道谁将在给定的岗位上。例如,我有一个表格。它最初是在位置 A 填写的。现在我希望它转到位置 B 并让他们填写其余部分。最
在我们的项目中,我们需要一个规则引擎组件,经过一段时间的研究,我发现.NET Workflow 也有它的规则引擎。 .NET 工作流规则引擎和其他引擎之间是否有任何完整的比较列表,例如NxBRE、Dr
我认为这可能是一个简单的问题,但我似乎无法弄清楚。 我有一个简单地发送邮件的工作流程。在邮件的内容中,我 有一个超链接可以返回到我们的 SAP CRM 系统。我将一些参数传递给这个超链接。 工作流程工
我正在试用 Workflow 4.0,希望编写自定义事件来启动外部可执行文件,等待该过程完成,然后恢复工作流中的后续步骤。 我发现以下示例显示(靠近页面底部)如何编写一个事件来等待文件到达特定目录:
我有一个工作流,它将观察某些数据库并在它注意到触发器时启动其他工作流。我只希望这个“观察者”工作流程的一个实例在任何时间点运行;否则,如果有两个或更多正在运行,他们都会注意到更改并启动相同的工作流程,
使用 Windows Workflow Foundation WF4,我有一个带有 System.Guid 的自定义事件名为 UniqueId 的属性. 我希望用户能够将我的事件拖到工作流上,并让它自
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使为on-topic。 6
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在尝试重新托管 WF4 工作流设计器。在“导入”选项卡中,我希望默认导入一些命名空间。它看起来像这样: Imported namespaces http://imageshack.us/m/850
how to work with 2010 workflows using powershell 上有一些指南.有人可以向我指出如何对 2013 年的工作流程做同样的事情吗?它们不再列在 $list.
在哪里可以找到 Nintex Workflow 网络服务的文档? 网络服务可以在http://myservername/MyNintexSite/_vti_bin/nintexworkflow/wor
我创建了一个 Activity (CodeActivity) 来检索我居住的温度。 我不想将该事件添加到工作流中并将其连接到一个 if 语句/事件,该语句/事件可以根据我的温度参数做不同的事情。 但我
我是一名优秀的程序员,十分优秀!