记录一次python 连接 Hbase的问题 Bad protocol id in the message: 72

自己搭建了一套完全分布式的hadoop 环境,Hbase也搭建好了。

在使用python 连接 Hbase的时候 试了很多种python 包。走到了一个步骤报错:

Bad protocol id in the message: 72

我最后修改了 conf/hbase-site.xml 这个文件中的两个配置 

<property> <name>hbase.regionserver.thrift.http</name> <value>False</value> </property> <property> <name>hbase.thrift.support.proxyuser</name> <value>False</value> </property>

之前在某个搭建Hbase的教程中是要求设置为true的,改为False后直接就成功了

最终的连接代码如下 

from thrift.transport import TSocket
from thrift.transport.TTransport import TFramedTransport
from thrift.protocol import TCompactProtocol
from hbase import Hbase

# thrift默认端口是9090, 我设置的是19090
socket = TSocket.TSocket('222.46.179.27', 19090)
socket.setTimeout(5000)

transport = TFramedTransport(socket)
protocol = TCompactProtocol.TCompactProtocol(transport)
client = Hbase.Client(protocol)
transport.open()

# 创建新表 'liuyu',假设只有一个列族 'cf'
table_name = 'liuyu'
column_families = {'cf': None}  # 列族为 'cf'

# 尝试创建表,如果表已存在会抛出异常,需要捕获并处理
try:
    client.createTable(table_name, [Hbase.ColumnDescriptor(name='cf')])
    print(f"Table '{table_name}' created successfully.")
except Exception as e:
    print(f"Failed to create table '{table_name}': {e}")

# 打印当前所有表名
print(client.getTableNames())

# 关闭连接
transport.close()

执行结果

同样的,使用happybase进行连接也成功了

import happybase

# HBase Thrift 服务地址和端口
host = '10.466.172.397'
port = 19090

# 连接 HBase
connection = happybase.Connection(host=host, port=port,transport='framed', protocol='compact')

# 创建新表 'liuyu',假设只有一个列族 'cf'
table_name = 'liuyu1'
column_family = 'cf'  # 列族为 'cf'

# 尝试创建表,如果表已存在会抛出异常,需要捕获并处理
try:
    connection.create_table(table_name, {column_family: dict()})
    print(f"Table '{table_name}' created successfully.")
except Exception as e:
    print(f"Failed to create table '{table_name}': {e}")

# 打印当前所有表名
print(connection.tables())

# 关闭连接
connection.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值