2015-02-11 120 views
1
def hbasePopulate(self,table="abc",MachineIP="xx.xx.xx.xx"): 

    connection=happybase.Connection(MachineIP,autoconnect=True) 
    tablename=Reptype.lower()+'rep' 
    print "Connecting to table " 
    print tablename 
    try: 
     table=connection.table(tablename) 
     for key,data in table.scan(): 
      print key,data 
     print table 
    #except IOError as e: 
    except: 
     print "Table does not exists,creating" 
     self.createTable(table=table,machineIP=machineIP) 

    with table.batch() as b: 
     with open('xxx.csv','r') as queryFile: 

      for lines in queryFile: 

       lines=lines.strip("\n") 
       splitRecord=lines.split(",") 
       key=splitRecord[0] 
       key=key.replace("'","") 
       val=",".join(splitRecord[1:]) 
       val=ast.literal_eval(val) 
       table.put(splitRecord[0],val) 

    for key,data in table.scan(): 
     print key,data 

def createTable(self,table="abc",MachineIP=""): 
    connection=happybase.Connection(MachineIP,autoconnect=True) 
    print "Connection Handle",connection 
    tname=table.lower() 
    tablename=str(tname) 
    print "Creating table : "+table+", On Hbase machine : "+MachineIP 
    families={"cf":{} ,} #using default column family 
    connection.create_table(table,families=families) 
    print "Creating table done " 

每次运行这个脚本时,它都会将数据填充到hbase表中,但它会保持连接处于打开状态。当我使用netstat -an进行检查时,发现连接计数已经增加,即使在脚本完成后,连接计数仍然存在。使用python中的happybase关闭与hbase数据库的连接

我错过了什么吗?我们是否需要明确关闭连接?

感谢您的帮助。

+0

得到了解决方案。发现这是 – MultipleCrashes 2015-02-21 18:45:04

+0

面临类似的问题,如果我们在REST模型中使用它似乎有Happybase中的错误。 – 2017-09-06 11:46:20

回答

1

得到了解决.Turns出成为本

try: 
     connection.close() 
    except Exception as e: 
      print "Unable to close connection to hbase " 
      print e 
+0

程序退出时,所有打开的套接字都会自动关闭。 – 2015-05-03 12:55:19

+0

但是,如果你在一个循环内打开一个新的连接,这是一个问题 – 2016-08-19 15:38:37

0

如果程序退出,任何网络连接被自动关闭。您可能看到的是已关闭连接的TIME_WAIT状态。