同步Hive表数据报block文件不存在问题 java.io.FileNotFoundException: File does not exist

简介: 同步Hive表数据报block文件不存在问题 java.io.FileNotFoundException: File does not exist

问题描述

Hive Reader 配置readMode为hdfs方式的情况下同步Hive表数据报block文件不存在问题: java.io.FileNotFoundException: File does not exist: /user/hive/warehouse/...


问题原因

1、Hive Reader配置readMode为hdfs方式的时候,底层读取数据的方式是基于HDFS文件方式读取数据,会先在HDFS上根据表找到数据对应的Block块,然后同步。出现上面报错的原因是找到表数据对应的块的数据还没有进行同步的时候,客户侧有做表数据删除等变更操作,或者表数据块文件删除的操作都有可能导致HiveReader在读取块数据的时候发现块不存在了,然后报: File does not exist


2、出现这个报错的概率比较低,数据量少的时候,同步速度快基本不会有这个问题,数据量特别大,同步速度慢,同步过程中客户有对数据进行操作就有可能会造成这个问题。


解决方案

以HDFS模式同步的时候保证不对表数据做变更可以避免,其次就是修改readMode为JDBC模式,该模式Hive引擎底层可能会生成MapReduce任务效率比HDFS模式慢,但是不会出现上述数据文件找不到的问题。


适用范围

大数据开发治理平台 DataWorks

相关文章
|
1月前
|
数据库
同步IO模型是一种常见的编程模型
【10月更文挑战第5天】同步IO模型是一种常见的编程模型
20 2
|
1月前
|
搜索推荐 索引
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
34 2
|
1月前
|
编解码 Java 程序员
【文件IO】文件内容操作
【文件IO】文件内容操作
48 2
|
1月前
|
存储 Java API
【文件IO】文件系统操作
【文件IO】文件系统操作
42 1
|
2月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
|
1月前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
35 0
|
2月前
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。
|
2月前
|
存储 调度
Block IO 控制器 【ChatGPT】
Block IO 控制器 【ChatGPT】
|
6月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
191 1
|
1月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
35 0