HBase: Thrift寫資料報錯——socket.error: [Errno 32] Broken pip
阿新 • • 發佈:2018-11-10
博主用的是python來讀寫hbase
需要安裝 pip install thrift 和 pip install hbase-thrift
hbase客戶端建立:
from thrift import Thrift from thrift.transport import TSocket, TTransport from thrift.protocol import TBinaryProtocol from hbase import Hbase #server端地址和埠,web是HMaster也就是thriftServer主機名,9090是thriftServer預設埠 transport = TSocket.TSocket('hadoop4’, 9090) #可以設定超時 transport.setTimeout(5000) #設定傳輸方式(TFramedTransport或TBufferedTransport) trans = TTransport.TBufferedTransport(transport) #設定傳輸協議 protocol = TBinaryProtocol.TBinaryProtocol(trans) #確定客戶端 client = Hbase.Client(protocol) #開啟連線 transport.open()
如果,在讀寫hbase過程中報錯:socket.error: [Errno 32] Broken pip,原因大致是因為,資料還沒有讀寫進去,socket已經關閉了,解決辦法就是在建立客戶端設定超時時間。
#可以設定超時
transport.setTimeout(5000)
或者直接在配置檔案conf/hbase-site.xml
中新增如下配置(每個節點都新增):
<property> <name>hbase.thrift.server.socket.read.timeout</name> <value>6000000</value> <description>eg:milisecond</description> </property>
即設定超時時間為60s。