Hive外部分区表加载flume打到hdfs上文件,读不到.tmp文件
来源:互联网 发布:金马网络服装批发城 编辑:程序博客网 时间:2024/05/18 11:13
摘要 flume打到hdfs上时,按照文件大小生成文件,在达到指定大小之前数据都是以.tmp文件形式保存在hdfs上,hive外部表也会加载这些文件,但是当文件完成后.tmp会消失,这时候hive会报找不到文件的错误。类似于:Caused by:org.apache.ahdoop.ipc.RemoteException(java.io.FileNotFoundException):File does not exist:/......../..../..xxx.log.tmp
hive外部分区表加载不到flume的临时文件hive自定义Pathfilter过滤加载数据的方式hive过滤数据文件
flume打到hdfs上时,按照文件大小生成文件,在达到指定大小之前数据都是以.tmp文件形式保存在hdfs上,hive外部表也会加载这些文件,但是当文件完成后.tmp会消失,这时候hive会报找不到文件的错误。解决方法是自己写hive的pathfilter类,hive加载数据的时候把tmp文件过滤掉不加载即可。
错误信息如下:
自定义PathFilter类如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
*
* @Title: FileFilterExcludeTmpFiles.java
* @Description: hive加载分区表时会加载.tmp的文件,该类型文件在flume滚动数据之后就会消失,此时hive找不到该文件就会报错
* 该类会将.tmp的文件过滤掉,不加载进hive的分区表中
* @version V0.1.0
* @see
*/
public
class
FileFilterExcludeTmpFiles
implements
PathFilter{
private
static
final
Logger logger = LoggerFactory.getLogger(FileFilterExcludeTmpFiles.
class
);
public
boolean
accept(Path path) {
// TODO Auto-generated method stub
return
!name.startsWith(
"_"
) && !name.startsWith(
"."
) && !name.endsWith(
".tmp"
);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<
property
>
<
name
>hive.aux.jars.path</
name
><
value
>file:///usr/lib/mylib/FilterTmpPath.jar</
value
>
<
description
>The location of the plugin jars that contain implementations of user defined functions and serdes.</
description
>
</
property
>
<
property
>
<
name
>mapred.input.pathFilter.class</
name
>
<
value
>cn.utils.hive.FileFilterExcludeTmpFiles</
value
>
</
property
>
0 0
- Hive外部分区表加载flume打到hdfs上文件,读不到.tmp文件
- Hive建Hdfs外部分区表
- HDFS上文件处理、Java文件读写
- hive 版本加载外部jar文件(区分本地与HDFS)
- java 操作 HDFS上文件
- HIVE分区表指定location加载不到数据解决方案
- MapReduce产生RCFile文件在HDFS,HIve将RCFile文件加载到hive的表中
- Hive 外部表 分区表
- Hive创建外部分区表
- flume上传文件到hdfs上
- flume监控目录文件到hdfs
- Hive数据加载(内部表,外部表,分区表)
- Hive 笔记之 创建外部分区表并加载数据
- 修改HDFS上文件的权限
- Hdfs上文件 读写 工具类 Demo
- hive读取与flume写入hdfs文件冲突
- Flume实现日志文件夹数据加载到HDFS
- Flume:本地文件到HDFS
- Cracking the code interview总结
- VC屏幕截图并保存为bmp、jpg、png等格式文件
- IOS-UI学习笔记(超级猜图)
- 函数-从进程名获得进程ID、从进程ID获得进程路径
- 卷积神经网络源码——最终输出部分的理解
- Hive外部分区表加载flume打到hdfs上文件,读不到.tmp文件
- JVM1
- waitpid函数使用
- 文件的自定义包发送接收
- JNDI初探之tomcat的datasource配置
- android:configChanges
- QT 添加资源文件
- mysql索引总结----mysql 索引类型以及创建
- StrToFloat()精度问题