使用python中的impala package中的executemany方法向hive table写入数据十分慢。
可以使用pyhdfs向 hdfs文件系统中写入文件,然后加载到table的分区实现。
环境:ubuntu 16.04, anaconda3,python3.6
安装: pip install pyhdfs (先which pip,看一下是否对应anaconda3下的bin中的pip)
连接hdfs:
from pyhdfs import HdfsClient
client = HdfsClient(hosts='10.10.10.10:50070',timeout=60, max_tries=20,user_name=default)
端口号是50070,或者对应hdfs设置的webhdfs的端口号,需要用户名,无需密码
用client.mkdirs(path),然后用client.copy_from_local(localfile,path)把本地文件拷贝到hdfs中,如果中途报错,
确保:
1.hdfs服务器上的webhdfs打开
Figure. 1
2. 将hdfs各个节点ip和domain加入到本地系统的hosts中:
Figure. 2
最后别忘了,用alter table把分区加载到hdfs table中。
作者:cosine90
链接:https://www.jianshu.com/p/2ed7def34529
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦