ファイルが占有されたため、Hive Loadファイルが失敗しました

4647 ワード

ファイルをLOADコマンドでHiveにインポートするプログラムをPythonで書きました.開始コードは次のように書きます.
 1 def loadToHive(bakFilePath, tbName):

 2     try:

 3         transport = TSocket.TSocket(HIVE_SERVER, HIVE_PORT)

 4         transport = TTransport.TBufferedTransport(transport)

 5         protocol = TBinaryProtocol.TBinaryProtocol(transport)

 6         client = ThriftHive.Client(protocol)

 7         transport.open()

 8         client.execute("LOAD DATA LOCAL INPATH '" + bakFilePath + "' INTO TABLE " + tbName)

 9         print "LOAD DATA LOCAL INPATH '" + bakFilePath + "' INTO TABLE " + tbName

10         transport.close()

11     except Thrift.TException, tx:

12         print '%s' % (tx.message)

13 

14 

15 def test():

16     try:

17         bak = file( 'tmp.bak', 'w') #         

18         ........ #    

19         loadToHive('tmp.bak', 'test') #load test 

20     except IOError as err:

21         print('File Error: '+ str(err))

22     finally:

23         bak.close()

 
検出hiveプロンプトを実行するには、次の手順に従います.
Copying data from file:****/tmp.bakCopying file: file:****/tmp.bakLoading data to table default.test100OK,
挿入に成功しましたが、hiveに行ってtest表を調べてみるとloadが入っていません!
後でloadToHive('tmp.bak','test')を実行する前にファイルを閉じてbak.close()はloadToHive('tmp.bak','test')の前に置いてインポートに成功しました.
hiveが導入に成功したかどうかを判断するのは問題があるようですね.