ファイルが占有されたため、Hive Loadファイルが失敗しました
4647 ワード
ファイルをLOADコマンドでHiveにインポートするプログラムをPythonで書きました.開始コードは次のように書きます.
検出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が導入に成功したかどうかを判断するのは問題があるようですね.
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が導入に成功したかどうかを判断するのは問題があるようですね.