千家信息网

Hive外部分区表加载flume打到hdfs上文件读不到.tmp文件怎么办

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍Hive外部分区表加载flume打到hdfs上文件读不到.tmp文件怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!flume打到hdfs上时,按照文件大小
千家信息网最后更新 2025年02月01日Hive外部分区表加载flume打到hdfs上文件读不到.tmp文件怎么办

这篇文章主要介绍Hive外部分区表加载flume打到hdfs上文件读不到.tmp文件怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

flume打到hdfs上时,按照文件大小生成文件,在达到指定大小之前数据都是以.tmp文件形式保存在hdfs上,hive外部表也会加载这些文件,但是当文件完成后.tmp会消失,这时候hive会报找不到文件的错误。解决方法是自己写hive的pathfilter类,hive加载数据的时候把tmp文件过滤掉不加载即可。

错误信息如下:

自定义PathFilter类如下:

/** *    * @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");        }}



编写完后,打成jar包上传服务器,再修改hive-site.xml文件,修改如下:

    hive.aux.jars.pathfile:///usr/lib/mylib/FilterTmpPath.jar    The location of the plugin jars that contain implementations of user defined functions and serdes.        mapred.input.pathFilter.class    cn.utils.hive.FileFilterExcludeTmpFiles  

以上是"Hive外部分区表加载flume打到hdfs上文件读不到.tmp文件怎么办"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0