Help us understand the problem. What is going on with this article?

digdagのtd>のdownload_file

More than 3 years have passed since last update.

MalformedInputExceptionになることがある → 0.8.19で解消済

digdag(執筆当時0.8.16くらいだったか)のtd>:にdownload_file:を指定すると、うまくいく場合と以下のエラーでうまくいかない場合がある
データによるっぽい?

    java.nio.charset.MalformedInputException: Input length = 1
org.msgpack.core.MessageStringCodingException: java.nio.charset.MalformedInputException: Input length = 1
       at org.msgpack.value.impl.AbstractImmutableRawValue.asString(AbstractImmutableRawValue.java:72)
       at io.digdag.standards.operator.td.TdOperatorFactory.addCsvValue(TdOperatorFactory.java:390)
       at io.digdag.standards.operator.td.TdOperatorFactory.addCsvRow(TdOperatorFactory.java:334)
       at io.digdag.standards.operator.td.TdOperatorFactory.lambda$downloadJobResult$0(TdOperatorFactory.java:304)
       at io.digdag.standards.operator.td.TDJobOperator.lambda$null$3(TDJobOperator.java:105)
       at com.treasuredata.client.TDHttpClient.call(TDHttpClient.java:442)
       at com.treasuredata.client.TDClient.jobResult(TDClient.java:597)
       at io.digdag.standards.operator.td.TDJobOperator.lambda$getResult$4(TDJobOperator.java:103)
       at io.digdag.util.RetryExecutor.run(RetryExecutor.java:158)
       at io.digdag.util.RetryExecutor.run(RetryExecutor.java:133)
       at io.digdag.standards.operator.td.TDJobOperator.getResult(TDJobOperator.java:102)
       at io.digdag.standards.operator.td.TdOperatorFactory.downloadJobResult(TdOperatorFactory.java:299)
       at io.digdag.standards.operator.td.TdOperatorFactory$TdOperator.processJobResult(TdOperatorFactory.java:124)
       at io.digdag.standards.operator.td.BaseTdJobOperator.runTask(BaseTdJobOperator.java:57)
       at io.digdag.util.BaseOperator.run(BaseOperator.java:51)
       at io.digdag.core.agent.OperatorManager.callExecutor(OperatorManager.java:297)
       at io.digdag.cli.Run$OperatorManagerWithSkip.callExecutor(Run.java:676)
       at io.digdag.core.agent.OperatorManager.runWithWorkspace(OperatorManager.java:241)
       at io.digdag.core.agent.OperatorManager.lambda$runWithHeartbeat$2(OperatorManager.java:134)
       at io.digdag.core.agent.NoopWorkspaceManager.withExtractedArchive(NoopWorkspaceManager.java:20)
       at io.digdag.core.agent.OperatorManager.runWithHeartbeat(OperatorManager.java:132)
       at io.digdag.core.agent.OperatorManager.run(OperatorManager.java:116)
       at io.digdag.cli.Run$OperatorManagerWithSkip.run(Run.java:658)

起きたときには以下で回避(★)

+step1:
  td>: XXX.sql
# download_file: XXX.csv
+step2:
  sh>: td job:show ${td.last_job_id} -f csv -o XXX.csv --column-header

2016/11/17追記:ver.0.8.19で解消済とのこと(試していないが) → http://docs.digdag.io/releases/release-0.8.19.html#workflow-changes

サーバモードだと次タスクで読めない

カレントディレクトリにダウンロードするので、ローカルモードなら次タスクで読める
しかしサーバモードだとタスク毎に専用ディレクトリが作られてその中で当該タスクが実行されて当該タスクが終わると当該ディレクトリは消えるのでダウンロードしたファイルを次タスクで読むことはできない
かといって「download_file: /tmp/XXX.csv」とか「download_file: ../XXX.csv」とか指定すると「プロジェクトディレクトリ外は指定不可」エラーになる

しかたないので前述の★で回避 (-o /tmp/XXX.csv)

pilot
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away