HiveException: xx with newer attempt ID 1 is smaller than the file xx with with older attempt ID 0

版本:HDP3.1.4 Hive3.1.0

异常描述:

java.io.IOException: File hdfs://cluster/tmp/hive/.hive-staging_hive_2021-04-09_10-08-47_704_718343819133902574-25365/_tmp.-ext-10002.moved/000316_1 with newer attempt ID 1 is smaller than the file hdfs://cluster/tmp/hive/.hive-staging_hive_2021-04-09_10-08-47_704_718343819133902574-25365/_tmp.-ext-10002.moved/000316_0 with older attempt ID 0)'
13929: 2021-04-09 10:24:43.608 | com.bx.slave.entity.JobTask.runJob(436) | org.apache.hadoop.hive.ql.metadata.HiveException: java.io.IOException: File hdfs://cluster/tmp/hive/.hive-staging_hive_2021-04-09_10-08-47_704_718343819133902574-25365/_tmp.-ext-10002.moved/000316_1 with newer attempt ID 1 is smaller than the file hdfs://cluster/tmp/hive/.hive-staging_hive_2021-04-09_10-08-47_704_718343819133902574-25365/_tmp.-ext-10002.moved/000316_0 with older attempt ID 0
13930: 2021-04-09 10:24:43.608 | at org.apache.hadoop.hive.ql.exec.FileSinkOperator.jobCloseOp(FileSinkOperator.java:1402)
13931: 2021-04-09 10:24:43.608 | at org.apache.hadoop.hive.ql.exec.Operator.jobClose(Operator.java:798)
13932: 2021-04-09 10:24:43.608 | at org.apache.hadoop.hive.ql.exec.Operator.jobClose(Operator.java:803)
13933: 2021-04-09 10:24:43.608 | at org.apache.hadoop.hive.ql.exec.Operator.jobClose(Operator.java:803)
13934: 2021-04-09 10:24:43.608 | at org.apache.hadoop.hive.ql.exec.tez.TezTask.close(TezTask.java:584)
13935: 2021-04-09 10:24:43.608 | at org.apache.hadoop.hive.ql.exec.tez.TezTask.execute(TezTask.java:321)
13936: 2021-04-09 10:24:43.609 | at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:212)
13937: 2021-04-09 10:24:43.609 | at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:103)
13938: 2021-04-09 10:24:43.609 | at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2712)
13939: 2021-04-09 10:24:43.609 | at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:2383)
13940: 2021-04-09 10:24:43.609 | at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:2055)
13941: 2021-04-09 10:24:43.609 | at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1753)
13942: 2021-04-09 10:24:43.609 | at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1747)
13943: 2021-04-09 10:24:43.609 | at org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:157)
13944: 2021-04-09 10:24:43.609 | at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:226)
13945: 2021-04-09 10:24:43.609 | at org.apache.hive.service.cli.operation.SQLOperation.access$700(SQLOperation.java:87)
13946: 2021-04-09 10:24:43.609 | at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork$1.run(SQLOperation.java:324)
13947: 2021-04-09 10:24:43.609 | at java.security.AccessController.doPrivileged(Native Method)
13948: 2021-04-09 10:24:43.609 | at javax.security.auth.Subject.doAs(Subject.java:422)
13949: 2021-04-09 10:24:43.609 | at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730)
13950: 2021-04-09 10:24:43.609 | at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork.run(SQLOperation.java:342)
13951: 2021-04-09 10:24:43.609 | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
13952: 2021-04-09 10:24:43.609 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
13953: 2021-04-09 10:24:43.610 | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
13954: 2021-04-09 10:24:43.610 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
13955: 2021-04-09 10:24:43.610 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
13956: 2021-04-09 10:24:43.610 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
13957: 2021-04-09 10:24:43.610 | at java.lang.Thread.run(Thread.java:748)
13958: 2021-04-09 10:24:43.610 | Caused by: java.io.IOException: File hdfs://cluster/tmp/hive/.hive-staging_hive_2021-04-09_10-08-47_704_718343819133902574-25365/_tmp.-ext-10002.moved/000316_1 with newer attempt ID 1 is smaller than the file hdfs://cluster/tmp/hive/.hive-staging_hive_2021-04-09_10-08-47_704_718343819133902574-25365/_tmp.-ext-10002.moved/000316_0 with older attempt ID 0

重试文件的大小可能和压缩格式和写入顺序有关系,所以在校验id和文件大小的方式不恰当,因此去掉文件大小校验

源码地址:Utilities.java   

compareTempOrDuplicateFiles

PATCH地址:
https://issues.apache.org/jira/browse/HIVE-23354

(可以关闭mr和hive的推测执行,应用patch1)

<think>好的,我现在需要解决用户提出的Unity项目文件损坏或版本不兼容的问题。用户提到遇到类似“The file 'MemoryStream' is corrupted!”或“serialized with newer version”的错误。首先,我得回忆一下之前处理这类问题的经验,并结合提供的引用内容来组织解决方案。 首先,根据引用[5],删除Library文件夹可以解决某些文件损坏问题。这应该是第一步,因为Library文件夹包含了Unity自动生成的元数据和缓存,删除后Unity会重新生成,可能修复损坏的文件。但用户需要注意备份项目,避免意外数据丢失,虽然通常不会影响Assets或ProjectSettings,但谨慎总没错。 接下来,引用[4]中提到删除Library文件夹是推荐的解决方法之一,同时提到重新克隆项目或使用脚本修复丢失的引用。如果用户使用版本控制(比如Git),重新克隆项目可能有效,但如果是本地项目,可能需要先尝试删除Library。此外,脚本引用丢失的问题可能与文件损坏有关,所以清理Library可能同时解决这两个问题。 然后,关于版本不兼容的问题,比如提示需要新版本Unity,引用[2]提到自动更新失败时需要手动下载安装包。因此,用户可能需要检查Unity版本是否与项目要求的匹配。如果项目是用较新版本的Unity创建的,而用户使用的是旧版本,就需要升级Unity。这时候需要到Unity官网下载对应的版本安装程序,或者根据错误提示中的URL手动下载所需的Web Player(虽然Web Player现在可能已经过时了)。 另外,引用[3]中提到了资源加载的方式,如果资源在序列化过程中损坏,可能需要重新导入或替换损坏的预制体或场景文件。用户可以尝试在AssetBundles中重新加载资源,或者检查特定预制体是否有问题,必要时从备份恢复。 还需要考虑资源文件本身是否损坏。用户需要检查最近修改过的文件,比如场景、预制体或脚本,尝试逐个排除。如果某个文件无法打开,可能需要从版本控制中恢复或手动修复其内容。 最后,预防措施也很重要。建议用户定期备份项目,尤其是使用版本控制系统,并保持Unity版本更新以避免兼容性问题。同时,避免直接删除项目文件,而是通过Unity编辑器进行操作,减少引用丢失的风险。 现在,我需要将这些步骤整理成一个清晰的解决方案,分步骤说明,并确保引用的内容正确标注。同时,生成相关问题,帮助用户进一步了解可能相关的其他问题。</think>### 解决Unity文件损坏或版本不兼容问题的方法 #### 1. **清理并重新生成项目缓存** - **删除`Library`文件夹**:Unity在编译时会生成大量缓存文件,若这些文件损坏会导致加载错误。关闭Unity编辑器后,手动删除项目根目录下的`Library`文件夹(此操作不会影响原始资源文件),重启Unity时会自动重建缓存[^4][^5]。 - **操作示例**: ```bash # 在项目路径下执行(Windows示例) rm -rf ./Library ``` #### 2. **修复版本不兼容问题** - **升级Unity编辑器**:若提示“serialized with newer version”,说明项目是用更高版本的Unity创建的。需到[Unity官网](https://unity.com/releases)下载对应版本安装程序。 - **手动下载依赖包**:若遇到类似“auto-update failed”错误(如旧版Web Player),可根据提示URL手动下载并安装依赖包[^2]。 #### 3. **修复损坏的资产文件** - **重新导入资源**:选中损坏的资产(如场景、预制体),右键选择`Reimport`。 - **替换损坏文件**:若文件内容损坏(如`.prefab`或`.scene`文件显示乱码),需从备份或版本控制(如Git)中恢复原始文件[^4]。 - **脚本引用丢失修复**:若Prefab因脚本删除导致引用丢失,可通过脚本批量修复或重新关联组件[^4]。 #### 4. **检查项目完整性** - **验证文件结构**:确保关键文件夹(如`Assets`、`ProjectSettings`)未被误删或移动。 - **使用日志定位问题**:查看`Editor.log`(路径:`C:\Users\<用户名>\AppData\Local\Unity\Editor\Editor.log`)中的具体错误信息。 #### 5. **预防措施** - **定期备份**:使用Git、SVN或云存储保存项目历史版本。 - **统一开发环境**:团队协作时确保所有成员使用相同Unity版本。 - **避免直接删除文件**:通过Unity编辑器删除资源,防止元数据残留导致引用错误。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值