码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 5.0 nodejs通过thrift连接hbase


    1、首先运行hbase thrift服务

    ./hbase-daemon.sh start thrift

    2、由于我使用的是windows,所以需要下载thrift.exe,并将其配置到环境变量Path中

    thrift下载地址:https://www.apache.org/dyn/closer.cgi?path=/thrift/0.16.0/thrift-0.16.0.exe

      3、复制Hbase.thrift到项目跟目录,并使用thrift命令生成文件

    thrift有两个版本,thrift1和thrift2,这边使用是thrift1

    hbase.thrift下载地址:https://github.com/apache/hbase/tree/rel/2.4.4/hbase-thrift/src/main/resources/org/apache/hadoop/hbase

    //在cmd中执行

    thrift --gen js:node Hbase.thrift

    4、nodejs测试代码

     hbase中,已经预建了3张表,我准备把它打印出来,却发现,什么都没有输出

    1. const thrift = require('thrift'),
    2. HBase = require('../../gen-nodejs/Hbase.js')
    3. const connection = thrift.createConnection('10.7.128.18',9090,{ transport: thrift.TFramedTransport,protocol:thrift.TBinaryProtocol });
    4. connection.on('connect',function(){
    5. console.log('connected');
    6. let client = thrift.createClient(HBase,connection);
    7. client.getTableNames(function(err,data){
    8. if(err)
    9. console.log('there was an error:',err);
    10. else
    11. console.log('hbase tables:',data.toString());
    12. });
    13. });
    14. connection.on('error',function(err){
    15. console.log('error',err);
    16. });

    5、使用python

    安装happybase,pip3 install happybase,安装happybase的过程中会自动安装thrift

    示例代码

    1. import happybase
    2. con = happybase.Connection('10.7.128.18', port=9090)
    3. t = con.tables()
    4. print(t)

    成功输出了3张表名 

     那为啥nodejs就不行呢

    6、经过一些资料查询,现得出解决方案

    //在hbase的bin目录下,执行jps,查看正在运行的服务

    停止ThriftServer服务,并重新启用服务,详细操作如下

    jps  

    ./hbase-daemon.sh stop thrift

    ./hbase-daemon.sh start thrift -f 

     注意这里启动服务的命令增加了-f参数

    再次运行nodejs测试代码,成功输出表名

     再次运行python代码,就会出现报错

     总结一下,如果是nodejs连,启动hbase thrift服务需要加-f参数,如果是python的happybase连的话不需要-f参数,上述的验证都是基于thrift1的实验

  • 相关阅读:
    Spark框架
    docker部署Jenkins
    Python对于有空值的数据,按列进行求平均
    70 QDateTime时间戳转换有误
    【UVM基础】m_sequencer 和 p_sequencer
    计算机二级WPS 选择题(模拟和解析十)
    5分钟看明白rust mod use
    蓝桥杯——123
    Python基础用法
    (212)Verilog HDL:四位移位寄存器和递减计数器
  • 原文地址:https://blog.csdn.net/LetsStudy/article/details/126951730
  • 最新文章
  • C# 内存安全性的重大演进:重新定义 unsafe 关键字
    [MAF的Agent管道详解-05]对话历史的持久化和输入输出的增强
    一行代码干翻 Java 反射?EggG 流式反射调用让反射优雅到不可思议
    vibe coding(二)Where you go:一个微型 windows 桌面覆盖工具
    [送码] 用 AI Coding 做了一个 App,谈谈 AI Coding 的真实体验
    面试官:说一下 Agent 的常见范式,如何选型?
    CAD子系统,是自研还是外包?
    polygon出题教程
    Manim物理模拟:别自己写欧拉了!
    AI 学习笔记:Agent 的应用演示
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号