2017-08-19 11 views
0

私はsqoopアクションで忙しいワークフローを抱えており、コマンドラインからこれらのsqoopアクションのログ(stdout)を取得したいと考えています。コマンドラインからoozie sqoopアクションのログを取得する

これは私が仕事だろうと思ったものです。その後、私が使用

------------------------------------------------------------------------------------------------------------------------------------ 
[email protected]_1      OK  job_1503124774831_0013 SUCCEEDED -   
------------------------------------------------------------------------------------------------------------------------------------ 
[email protected]_2      OK  job_1503124774831_0014 SUCCEEDED -   
------------------------------------------------------------------------------------------------------------------------------------ 

そして:

アクションのjob_idsを印刷し

oozie job -info 0000002-170819062150496-oozie-oozi-W

mapred job -logs job_1503124774831_0013

しかし、このmapreduceログのみを表示するs。 SQoopのstdoutログは、処理されたレコードの数がHueのように見えますが、--last-value(インクリメンタルの場合)は利用できません。

これを入手する方法はありますか?

EDIT: sqoop設定ファイルとワークフローファイルを追加する。

sqoop_import_config.txt

import 
--connect 
${connect} 
--username 
${username} 
--password 
${pwd} 
--hive-delims-replacement 
\001 
--fields-terminated-by 
\003 
--null-string 
\\N 
--null-non-string 
\\N 
--target-dir 
/data/${table}/${shard} 
--query 
SELECT ${columns} from ${table} WHERE $CONDITIONS 
--split-by 
id 
--boundary-query 
select min(id), max(id) from ${table} 
--m 
${numMappers} 
--incremental 
lastmodified 
--last-value 
${lastValue} 
--check-column 
updated_at 
--merge-key 
id 

workflow.xml

<workflow-app name="${tableName}_${type}_Sqoop" xmlns="uri:oozie:workflow:0.5"> 
    <credentials> 
     <credential name="hive2" type="hive2"> 
      <property> 
       <name>hive2.jdbc.url</name> 
       <value>${hive2JdbcUrl}</value> 
      </property> 
      <property> 
       <name>hive2.server.principal</name> 
       <value>${hive2MetastorePrincipal}</value> 
      </property> 
     </credential> 
    </credentials> 
    <start to="sqoop-import-fork"/> 
    <kill name="Kill"> 
     <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
    </kill> 
    <fork name="sqoop-import-fork"> 
    <path start="sqoop-import-shard_1"/> 
    <path start="sqoop-import-shard_2"/></fork> 

    <action name="sqoop-import-shard_1"> <sqoop xmlns="uri:oozie:sqoop-action:0.2"><arg>--options-file</arg> <arg>${tableName}_shard_1_import.txt</arg></sqoop> <ok to="sqoop-import-join"/> <error to="email-b1f2"/> </action> 
    <action name="sqoop-import-shard_2"> <sqoop xmlns="uri:oozie:sqoop-action:0.2"><arg>--options-file</arg> <arg>${tableName}_shard_2_import.txt</arg></sqoop> <ok to="sqoop-import-join"/> <error to="email-b1f2"/> </action> 
    <action name="move-data" cred="hive2"> 
    . . . 
+0

あなたSqoopコマンドと 'oozieのworkflow.xml' –

+0

@SandeepSingh追加を投稿することができます。それが役に立てば幸い。コマンドラインからsqoopのアクションログが必要となるようなユースケースに遭遇しましたか? – PratPor

+0

はい、シェルアクションを使用していました。私はSqoopアクションで試してみましょう。 –

答えて

0

mapred job helpを見た後、標準出力のログを取得する方法を考え出しました。使用してoozieからJOB_IDを受けた後

:使用してジョブのための試みの

oozie job -info 0000002-170819062150496-oozie-oozi-W

のGetリスト:タスク型のため

mapred job -list-attempt-ids <job-id> <task-type> <task-state>

  • 有効な値は、MAPをREDUCEあります。タスクの状態のため
  • 有効な値は、実行されている、

を完了したので、私は走った:

:今私 attempt_1503124774831_0022_m_000000_0

を与えたmapred job -list-attempt-ids job_1503124774831_0022 MAP completedを、私が使用してsqoopデータを持っていた試みのログを取得することができました

mapred job -logs job_1503124774831_0022 attempt_1503124774831_0022_m_000000_0

関連する問題