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

发布时间:2021-12-09 11:10:52 作者:小新
来源:亿速云 阅读:366

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

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

 错误信息如下:Hive外部分区表加载flume打到hdfs上文件读不到.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文件,修改如下:

<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>

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

推荐阅读:
  1. spark-local 模式 提示 /tmp/hive hdfs 权限不够的问题
  2. linux中tmp文件如何恢复

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hive flume hdfs

上一篇:Linux系统运行级别是怎样的

下一篇:如何使用JS操作文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》