Sqoop通过bash工作,但不';我不能通过oozie工作

Sqoop通过bash工作,但不';我不能通过oozie工作,bash,sqoop,oozie,Bash,Sqoop,Oozie,我有一个shell脚本 sqoop import \ -Dmapreduce.job.queuename=adhoc \ --connect jdbc:oracle:thin:secret@//secret \ --query "a select" \ --target-dir /apps/hive/warehouse/data.db/fair_usage \ --delete-target-dir \ -m 1 \ --fields-terminated-by

我有一个shell脚本

  sqoop import \
  -Dmapreduce.job.queuename=adhoc \
  --connect jdbc:oracle:thin:secret@//secret \
  --query "a select"  \
  --target-dir /apps/hive/warehouse/data.db/fair_usage \
  --delete-target-dir \
  -m 1 \
  --fields-terminated-by '\t' 
当我把它放在sh文件中并运行它时,它就工作了。但当我试着以oozie动作跑的时候,它失败了。我尝试同时使用bash操作和sqoop操作。这是Sqoop操作。我还尝试使用
import….
tag运行sqoop

  <action name="export_table" cred="hv_cred">
    <sqoop xmlns="uri:oozie:sqoop-action:0.2">
      <job-tracker>${JOB_TRACKER}</job-tracker>
      <name-node>${NAME_NODE}</name-node>
      <configuration>
        <property>
          <name>mapred.task.timeout</name>
          <value>600000</value>
        </property>
      </configuration>
        <arg>import</arg>
        <arg>-Dmapreduce.job.queuename=adhoc</arg>
        <arg>--connect</arg>
        <arg>jdbc:oracle:thin:secret@//secret</arg>
        <arg>--query</arg>
        <arg>"a select"</arg>
        <arg>--target-dir</arg>
        <arg>/apps/hive/warehouse/data.db/fair_usage</arg>
        <arg>--delete-target-dir</arg>
        <arg>-m</arg>
        <arg>1</arg>
        <arg>--fields-terminated-by</arg>
        <arg>'\t'</arg>
    </sqoop>
    <ok to="END"/>
    <error to="KILL"/>
  </action>
编辑

我再次尝试通过shell操作运行脚本。它成功了。sh没有改变,所以我可能在wirkflow文件中犯了一个错误。我没有保存它的旧版本,所以说不出那个错误是什么

壳作用

  <action name='export_table'>
    <shell xmlns="uri:oozie:shell-action:0.1">
      <job-tracker>${JOB_TRACKER}</job-tracker>
      <name-node>${NAME_NODE}</name-node>
      <configuration>
        <property>
          <name>mapred.job.queue.name</name>
          <value>${QUEUE_NAME}</value>
        </property>
      </configuration>
      <exec>bash/export_table.sh</exec>
      <file>bash/export_table.sh#export_table.sh</file>
    </shell>
    <ok to="END"/>
    <error to="KILL"/>
  </action>

${JOB_TRACKER}
${NAME_NODE}
mapred.job.queue.name
${QUEUE_NAME}
bash/export_table.sh
bash/export_table.sh#export_table.sh
仍然不知道为什么sqoop操作不起作用=/

编辑2


几个月过去了,我收回了我的话。费金·斯库普。同样的错误

在bash中,引号是语法性的,不能作为参数文本传递

<arg>a select</arg>
...
<arg>\t</arg>

第一个参数可能是命令,而不是第一个

导入

问题与工作流或sqoop脚本本身无关,而是一些我不知道的内在机制。可能是找不到libs

当我在terminal中运行脚本时,会生成一个java类。此类似乎描述了如何将配置单元表解析为oracle表或smth。当我启动oozie时,我需要将这个自动生成的文件添加到根目录(带有协调器和工作流的目录)。如果我不这么做,奥齐就失败了。这该死的东西连一个错误都没有(

无论如何,在将java类添加到root之后,我可以从shell操作运行sqoop。sqoop操作仍然不起作用。另外,我注意到,如果在sqoop中使用

--export-dir /apps/hive/warehouse/db.db/table/
但是如果我尝试

--hcatalog-database db \
--hcatalog-table table \

在shell中,它无论如何都会失败。它可能试图向类路径添加一些库,但无法添加或smth。

我已经阅读了文档。在该页面上有两个示例。其中一个使用
,另一个使用
标记。它们不会混合使用。我只是为了以防万一,但出现了一个错误。它在哪个操作系统上运行?2.6.32-504.12.2.el6.x86_64 GNU/Linux
--export-dir /apps/hive/warehouse/db.db/table/
--hcatalog-database db \
--hcatalog-table table \