oss数据同步maxcompute报错

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 在使用阿里云DataWorks同步OSS数据至MaxCompute时,遇到“Input is not in the .gz format”的报错。问题源于目标目录中存在一个空文件,导致同步时识别错误。

报错信息

在阿里云中使用dataworks,同步oss数据到maxcompute过程中产生的报错

ErrorMessage:
Code:[UnstructuredStorageReader-09], Description:[您配置的文件在读取时出现IO异常.]. - 流读取错误 : [bucket/###/###/###/###/2024-09-17/] - java.io.IOException: Input is not in the .gz format
    at org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.init(GzipCompressorInputStream.java:162)
    at org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.<init>(GzipCompressorInputStream.java:135)
    at com.alibaba.datax.plugin.unstructuredstorage.reader.UnstructuredStorageReaderUtil.getDecompressedInputStream(UnstructuredStorageReaderUtil.java:259)
    at com.alibaba.datax.plugin.unstructuredstorage.reader.UnstructuredStorageReaderUtil.getFileBufferedReader(UnstructuredStorageReaderUtil.java:244)
    at com.alibaba.datax.plugin.unstructuredstorage.reader.UnstructuredStorageReaderUtil.readFromInputStream(UnstructuredStorageReaderUtil.java:224)
    at com.alibaba.datax.plugin.unstructuredstorage.reader.UnstructuredStorageReaderUtil.readFromStream(UnstructuredStorageReaderUtil.java:210)
    at com.alibaba.datax.plugin.reader.ossreader.OssReader$Task.startRead(OssReader.java:397)
    at com.alibaba.datax.core.taskgroup.runner.ReaderRunner.run(ReaderRunner.java:107)
    at java.lang.Thread.run(Thread.java:853)

背景

我需要在 oss 中上传一些文件到 2024-09-17 这个目录下,但是我并没有这个目录,所以我手动创建目录,并上传了文件。文件为压缩格式,压缩方式为gz

image-20240918162205410.png

然后同步任务参数配置为

image-20240918163258565.png

随后开始调度任务便有了最开始的报错信息

排查

此时我的 2024-09-17 这个目录下 仅有一个文件

image-20240918164415458.png

并且这个文件格式正确,但是报错信息匪夷所思 Input is not in the .gz format 。

这个目录下仅有一个文件,并且我确定文件格式正确(2024-09-16,也就是前一天可以正常调度,没有报错,为了对比,我将那天的文件直接拷贝过来)。

很奇怪!?明明只有一个文件,而且文件格式肯定正确,却告诉我文件格式不正确,到底哪里错了?莫非?

我去点击了统计文件

image-20240918164004274.png

image-20240918164037333.png

等等!两个!?可是我上看下看左看右看,都只看到了一个文件,并且我也确定我只上传了一个文件!

为此我去下载了 ossutil(可以查看到所有文件,我倒要看看那个隐藏文件是何物) 配置完成后

在黑窗口输入ossutil ls oss://examplebucket --all-versions

image-20240918165540168.png

可以看到,确实有两个文件,下面那个为我上传的正常文件,可是上面那个空空如也。

由此,我确定了,导致报错的罪魁祸首就是这个空文件,或者叫,文件前缀。

dataworks在同步数据时,我使用了通配符 * ,所以会扫描此目录下的所有文件,因此这个 文件前缀 也被同步进去了,可是他不是gz格式,当然会报错 Input is not in the .gz format

解决

如何避免这个文件前缀呢?

我只列出两种工具,手动操作的方式,不谈API(此方法也可解决问题),想了解的小伙伴可自行查阅

  1. 使用 ossutil 工具上传你想放进 oss 的文件

    ossutil cp /localpath/text.gz oss://my-bucket/2024-09-17/text.gz
    
  2. 使用 oss-browser 工具

    首先在目录那输入你想创建文件夹(此时文件夹还没有真正的创建),按下回车

    image-20240918171648265.png

然后点击左边的上传文件即可,在选择完文件后点击确定,阿里云会自动帮你创建文件夹(由他创建是不会有问题的,也就是不会有那个多余的文件前缀)

这两种方法都可,执行完后去查看是否还有多余的文件前缀

image-20240918171801793.png

成功!

转载自本人博客:https://lllblog.cn/2024/09/18/oss_sync_error/

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
4月前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理数据同步时(mysql->hive)报:Render instance failed
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
5月前
|
Java Serverless 数据库连接
函数计算操作报错合集之调用打包的OSS函数时发生报错,该怎么办
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
分布式计算 DataWorks 数据管理
DataWorks操作报错合集之写入ODPS目的表时遇到脏数据报错,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
120 0
|
4月前
|
分布式计算 DataWorks NoSQL
DataWorks操作报错合集之遇到报错:failed: ODPS-0130071:[1,36] Semantic analysis exception,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
215 0
|
4月前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之如何解决datax同步任务时报错ODPS-0410042:Invalid signature value
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之新建MAXComputer数据源时,如何解决报错ODPS-0420095: Access Denied
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
2月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
145 1
|
3月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
844 4

热门文章

最新文章

相关产品

  • 对象存储