```text
# 解决报错:hbase报错TTransportException(type=4,message=’TSocket read 0 bytes’)
这种情况一般协议问题和服务端没开启,如果服务端是开启的,且正常的.那么考虑协议没有一致.
在解决问题之前,需要了解一下Facebook 的thrift 是什么样的,怎么支持多种语言的.建议去官网了解一下,答主也是对他进行了解,才将这个问题解决的,网上的很多方案未能解决我的问题,尤其针对新版本的hbase.
1.去hbase 集群机器中找到,hbase-thrift.jar ,此处也可以去github 上的hbase开源项目上对应版本拿,但是答主考虑兼容问题,还是从自己的集群拿比较好
2.在hbase-thrift.jar上找到 hbase.thrift 文件,一般是有两个一个是版本是thrift1 一个是thrift2 的,一般推荐使用 2进行操作
3.将hbase.thrift 文件复制到你项目目录下
4.安装Thrift编译器
首先,安装Thrift编译器,以便生成Python客户端代码。您可以从Thrift的官方网站([https://thrift.apache.org/download)下载适用于您的操作系统的编译器。一般最新版本能够向后兼容的
5. 生成Python客户端代码
使用Thrift编译器,您可以生成Python客户端代码。在命令行中,使用以下命令:
shell 命令
`thrift -gen py Hbase.thrift`
windows 命令
下载位置/thrift.exe -gen py Hbase.thrift
在这个命令中,`-gen py`参数指示Thrift编译器生成Python客户端代码,`Hbase.thrift`是包含HBase Thrift API定义的Thrift IDL文件的路径。生成的Python客户端代码将存储在`gen-py`目录中。然后我将hbase 重命名为 hbase.注意上面最后在你想运行的python环境下运行,免得造成python版本问题
6. 使用生成的Python客户端代码
生成的Python客户端代码包含了一个名为`Hbase`的Python模块,其中包含客户端代码,以便使用HBase Thrift服务器的API。在您的Python应用程序中,您可以使用生成的客户端代码,通过HBase Thrift服务器执行对HBase表的操作。以下是案例代码
```
```python
from gen_py.Hbase import Hbase
from thrift.transport import TSocket
from thrift.transport import TTransport
# 此处需要看你集群上的协议配置的是什么呢?TCompactProtocol TBinaryProtocol,不然也会报这个错误
from thrift.protocol import TCompactProtocol

# 创建一个连接到HBase Thrift服务器的socket
socket = TSocket.TSocket('localhost', 9090)
transport = TTransport.TCompactProtocol(socket)

# 创建一个Hbase客户端,此处要看你集群的hbase 配置是什么呢
protocol = TCompactProtocol.TCompactProtocol(transport)
client = Hbase.Client(protocol)

# 打开连接
transport.open()

# 创建一个表
table_name = b'mytable'
column_family = b'cf'
client.createTable(table_name, [Hbase.ColumnDescriptor(name=column_family)])

# 在表中插入一些数据
row_key = b'row1'
mutations = [
Hbase.Mutation(column=column_family+b':col1', value=b'value1'),
Hbase.Mutation(column=column_family+b':col2', value=b'value2')
]
attributes = {
}
scanner_attributes = {
'batch_size': bytes(10)
}
client.mutateRow(table_name, row_key, mutations, attributes)
scanner_id = client.scannerOpen(table_name, b'', [column_family], scanner_attributes)
results = client.scannerGetList(scanner_id, 10)
for result in results:
print(result.row)

# 关闭连接
transport.close()

```
``

最后如果遇到什么问题,可留言

解决python 操作 hbase报错:TTransportException(type=4,message=’TSocket read 0 bytes’)的更多相关文章

  1. 解决python编码问题报错:'ascii' codec can't encode characters in position 0-15: ordinal not in range(128)

    这个问题很奇怪,在服务器上执行一个写数据库的python文件,正常执行,但是使用java的ssh进行调用脚本,发现就是不执行数据库的写入,然后使用了try except的方式,打印了错误信息,发现报错 ...

  2. Python - celery 相关报错 - AttributeError: type object '_multiprocessing.win32' has no attribute 'WAIT_OBJECT_0'

    报错场景 执行   celery worker -A tasks -l INFO  打开 worker 的时候报错无法进行 报错解决 Celery 的版本过高, 进行降级处理即可 pip instal ...

  3. 解决idea启动项目报错:Unable to open debugger port(127.0.0.1:60157):java.net.SocketException"socket closed

    原因分析: 1.可能是端口被占用导致,其他软件占用了tomcat的端口. 2.可能是在打开Tomcat的情况下关闭了Eclipse.idea等开发工具,或是Eclipse.idea非正常关闭(如电脑. ...

  4. 解决:启动项目报错 java.lang.UnsatisfiedLinkError: D:\Java\apache-tomcat-8.0.17\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform

    启动项目报错如下: java.lang.UnsatisfiedLinkError: D:\Java\apache-tomcat-8.0.17\bin\tcnative-1.dll: Can't loa ...

  5. [Java-Idea]解决idea启动项目报错:Unable to open debugger port(127.0.0.1:53046):java.net.SocketException"socket closed

    命令行窗口,执行命令:netstat -aon|findstr 9030 查找占用端口的进程 taskkill -f -pid 11331

  6. maven项目编译报错:Type Dynamic Web Module 3.0 requires Java 1.6 or newer.

    在maven的pom.xml文件中增加: <build>   <plugins>     <plugin>         <groupId>org.a ...

  7. pyhive -- thrift.transport.TTransport.TTransportException: TSocket read 0 bytes

    Pyhive 远程连接hive出现问题: from pyhive import hive import pandas as pd #Create Hive connection conn = hive ...

  8. mac下python环境pip报错[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) 的解决方法

    1.mac下python环境pip报错: issuserdeMacBook-Pro:~ issuser$ pip install pyinstallerCollecting pyinstaller  ...

  9. python各种BUG报错解决

    报错1 python学习交流群:660193417### Could not build atari-py: Command '['cmake', '..']' returned non-zero e ...

  10. Eclipse连接HBase 报错:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing

    在eclipse中连接到HBase报错org.apache.hadoop.hbase.PleaseHoldException: Master is initializing,搜索了好久,网上其它人说的 ...

随机推荐

  1. What?JMeter做UI自动化!

    JMeter做UI自动化 不推荐,好别扭,但可行 插件安装 搜插件selenium,安装 添加config 添加线程组 右键线程组->添加->配置元件->jp@gc - Chrome ...

  2. Vulhub 漏洞学习之:Aria2

    Vulhub 漏洞学习之:Aria2 目录 Vulhub 漏洞学习之:Aria2 1 Aria2 任意文件写入漏洞 1.1 漏洞利用 1 Aria2 任意文件写入漏洞 Aria2是一个命令行下轻量级. ...

  3. K8S 1.20 弃用 Docker 评估之 Docker CLI 的替代产品

    title: K8S 1.20 弃用 Docker 评估之 Docker CLI 的替代产品 tags: - Docker - K8S - OCI - 容器 - 最佳实践 - RedHat - Sko ...

  4. centos7 开机自启动脚本

    两种实现方式 方法1:(rc.local) 1.因为在centos中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local ...

  5. listview自定义适配器

    class FruitAdapter(activity: Activity ,val id:Int,data:List<Fruit>):ArrayAdapter<Fruit>( ...

  6. Android 数据回显

    public class EchoDataUtils { /** * 保存文件到手机内存 * @param context * @param number * @param psw * @return ...

  7. ESXi 安装 Truenas Core 解决企业共享存储免费方案

    服务器配置 创建虚拟机内存最少8+,建议选择32,CPU没啥用,我给了2,硬盘我选择了50G+8T,因为一个虚拟机无法使用两个存储池,所以全部使用非SSD硬盘,自带网卡删除,单独给一个直通网卡,建议上 ...

  8. REST风格开发

    使用测试工具 测试工具中 总结 @RequestBody:接收请求体参数Json @RequestParam:接收路径参数,包括表单 @PathVariable: 接收路径变量的. Rest风格优化 ...

  9. Android studio学习笔记3

    Android studio学习笔记3 RelativeLayout常见属性 相对于父元素给控件布局 android:layout_centerHrizontal 若为ture水平居中 android ...

  10. 存储型XSS的利用

    一.存储型XSS漏洞利用原理 攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码.意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本. 二.漏洞利 ...