文件被占用导致Hive Load文件不成功
2024-08-31 08:22:48
用Python写了个用LOAD命令将文件导入Hive的程序,开始代码写成下面这样:
def loadToHive(bakFilePath, tbName):
try:
transport = TSocket.TSocket(HIVE_SERVER, HIVE_PORT)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute("LOAD DATA LOCAL INPATH '" + bakFilePath + "' INTO TABLE " + tbName)
print "LOAD DATA LOCAL INPATH '" + bakFilePath + "' INTO TABLE " + tbName
transport.close()
except Thrift.TException, tx:
print '%s' % (tx.message) def test():
try:
bak = file( 'tmp.bak', 'w') #需要打开文件处理下
........ #处理文件
loadToHive('tmp.bak', 'test') #load到test表
except IOError as err:
print('File Error: '+ str(err))
finally:
bak.close()
运行发现hive提示:
Copying data from file:****/tmp.bak
Copying file: file:****/tmp.bak
Loading data to table default.test100
OK,
即插入成功,但是,去hive查test表发现根本没load进去!
后来发现需要在执行 loadToHive('tmp.bak', 'test') 前关闭文件,把bak.close()放到 loadToHive('tmp.bak', 'test') 前面就成功导入了。
看来hive判断是否导入成功是有问题的啊。
最新文章
- jQuery中的Ajax - Codeigniter版本
- Replace conditional with Polymorphism
- Linux学习笔记(4)-远程登录
- 禅道 Rest API 开发
- Android之滑屏动画和自定义控件
- Javascript format方法
- POJ 2349 Arctic Network (最小生成树)
- 把CheckedListBoxControl设置为单选框
- HTMLParser获取属性名
- O-C相关-09-id 类型与应用
- Unity3d Fast Indirect illumination Using Two Virtual Spherical Gaussian Lights-Square Enix论文
- Elastalert安装及使用
- PostgreSQL 创建触发器 Trigger
- fedora 28 重新生成 /boot/grub2/grub.cfg
- Delphi实现树型结构
- Levenberg-Marquardt 的 MATLAB 代码
- SWD 接口电路
- Dynamics 365 可编辑子网格的字段禁用不可编辑
- Hadoop生态圈-hive编写自定义函数
- Java基础之JDK的下载与安装
热门文章
- PAT_A1155#Heap Paths
- TensorFlow实战笔记(17)---TFlearn
- 【剑指Offer】12、数值的整数次方
- Jquery向页面append新元素之后,如何解决事件的绑定问题?
- 2019-04-16 sql tran and try catch :
- 2013年工作中遇到的20个问题(Bug):161-180
- 学习EXTJS6(8)基本功能-表单的基础表字段Ext.form.field.Basic
- 0823关于整理MySQL死锁
- asp.net--WebService知识点
- xtrabackup增量备份mysql +MHA