设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 数据 创业者
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Hive 如何快速拉取大批量数据(5)

发布时间:2020-11-06 07:27 所属栏目:21 来源:网络整理
导读://查看所有分片数据文件列表hdfsdfs-lshdfs://xx/hive/mydb.db/*//下载所有数据文件到/tmp/local_hdfs目录hdfsdfs-gethdfs://xx/hive/mydb.db/*/tmp/local_hdfs 我们可以通过以上命令,将数据文件下载到本地,也可

// 查看所有分片数据文件列表 hdfs dfs -ls hdfs://xx/hive/mydb.db/* // 下载所有数据文件到 /tmp/local_hdfs 目录 hdfs dfs -get hdfs://xx/hive/mydb.db/* /tmp/local_hdfs 

我们可以通过以上命令,将数据文件下载到本地,也可以hdfs的jar包,使用 hdfs-client 进行下载。优缺点是:使用cli的方式简单稳定但依赖于服务器环境,而使用jar包的方式则部署方便但需要自己写更多代码保证稳定性。各自选择即可。

最后,我们还剩下1个问题:如何处理临时表的问题?hive目前尚不支持设置表的生命周期(阿里云的maxcompute则只是一个 lifecycle 选项的问题),所以,需要自行清理文件。这个问题的实现方式很多,比如你可以自行记录这些临时表的创建时间、位置、过期时间,然后再每天运行脚本清理表即可。再简单点就是你可以直接通过表名进行清理,比如你以年月日作为命令开头,那么你可以根据这日期删除临时表即可。如:

-- 列举表名 show tables like 'dbname.tmp_20201101*'; -- 删除具体表名 drop table dbname.tmp_2020110100001 ;  

至此,我们的所有问题已解决。总结下:首先使用临时表并行地将结果写入;其次通过hdfs将文件快速下载到本地即可;最后需要定时清理临时表;这样,你就可以高效,无限制的为用户拉取大批量数据了。

不过需要注意的是,我们的步骤从1个步骤变成了3个步骤,增加了复杂度。(实际上你可能还会处理更多的问题,比如元数据信息的对应问题)复杂度增加的最大问题就在于,它会带来更多的问题,所以我们一定要善于处理好这些问题,否则将会带来一副作用。

 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读