Dataphin管道任务将FTP数据同步到Hive,运行报错“java.io.IOException: Input is not in the .gz format”

更新时间:

问题描述

Dataphin管道任务将FTP数据同步到Hive,运行报错“java.io.IOException: Input is not in the .gz format”。完整报错信息如下:

2022-09-15 18:36:43.234 [0-0-0-reader] INFO  FtpReader$Task - reading file : [/upload/DLOAD/dwa_busi_innov_prod_ds_20220810_202209141917.gz]
2022-09-15 18:36:43.234 [0-2-2-reader] ERROR ReaderRunner - Reader runner Received Exceptions:
com.alibaba.dt.pipeline.plugin.center.exception.DataXException: Code:[UnstructuredStorageReader-09], Description:[您配置的文件在读取时出现IO异常.].
- 流读取错误 : [/upload/DLOAD/dwa_busi_innov_prod_ds_20220810_202209151835.gz] - java.io.IOException: Input is not in the .gz format
 at org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.init(GzipCompressorInputStream.java:146)
 at org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.<init>(GzipCompressorInputStream.java:129)
 at org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.<init>(GzipCompressorInputStream.java:94)
 at com.alibaba.datax.plugin.unstructuredstorage.reader.UnstructuredStorageReaderUtil.readFromStream(UnstructuredStorageReaderUtil.java:152)
 at com.alibaba.datax.plugin.reader.ftpreader.FtpReader$Task.startRead(FtpReader.java:292)
 at com.alibaba.dt.dlink.core.trans.adaptor.engine.ReaderRunnerAdaptor.run(ReaderRunnerAdaptor.java:57)
 at java.lang.Thread.run(Thread.java:882)

问题原因

如下截图为提取的问题文档,其中明显可以看出,部分文档为0kb脏数据,是FTP数据源脏文件。由于空文件并非空压缩包,导致该文件无法被识别成压缩文件流,故该问题产生。

解决方案

给管道任务创建上游Shell节点,删除FTP服务器中所有0kb的文件(空文件,非空压缩包且不包含任何数据),然后再运行管道任务即可。

适用于

  • Dataphin