Python Pandas导出Hbase数据到dataframe

2023-11-20

Python导出Hbase数据的思路:

  1. 使用happybase连接Hbase
  2. 使用table.scan()扫数据,将得到的数据整理为dataframe格式
  3. 将从Hbase中得到的byte类型的数据转为str类型的数据

示例代码

import happybase
import numpy as np
import pandas as pd


def create_table(table_name):
    """创建表"""
    connection = happybase.Connection()
    if table_name in connection.tables():  # 在所有的表中
        connection.delete_table(table_name, disable=True)  # 删除表
    connection.create_table(
        table_name,  # 表名
        {
            "col_1": dict(),  # 定义列族
            "col_2": dict(),  # 定义列族
            "col_3": dict(),
        }
    )
    connection.close()


def generate_data(table_name):
    """添加数据,添加20000行数据"""
    connection = happybase.Connection()
    table = connection.table(table_name)
    with table.batch(batch_size=10) as batch_table:
        for i in range(20000):
            random_col = np.random.randint(0, 10)
            batch_table.put('row{}'.format(i), {
                'col_1:c{}'.format(random_col): "{}".format(random_col),
                'col_2:c{}'.format(random_col): "{}".format(random_col),
                'col_3:c{}'.format(random_col): "{}".format(random_col),
            })


def convert_string(value):
    """将byte类型的数据转为str"""
    if pd.isna(value):
        return value
    else:
        return value.decode("utf8")


def change_data_to_dataframe(table_name, limit=2000):
    """将数据转为dataframe"""
    connection = happybase.Connection()
    table = connection.table(table_name)
    table_index = []
    table_values = []
    for key, value in table.scan(limit=limit):  # 选择前1000行
        table_index.append(key)
        table_values.append(value)
    table_index = [i.decode("utf8") for i in table_index]
    table_df = pd.DataFrame(table_values, index=table_index)
    table_df = table_df.applymap(convert_string)  # 将bytes解码为utf-8
    table_df.columns = [convert_string(i) for i in table_df.columns]
    return table_df


def main():
    table_name = "generate_table"
    create_table(table_name)  # 创建数据table
    generate_data(table_name)  # 生成数据table
    table_df = change_data_to_dataframe(table_name)
    print(table_df.head())


if __name__ == '__main__':
    main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Pandas导出Hbase数据到dataframe 的相关文章

  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • 深入ftrace kprobe原理解析

    Linux krpobe调试技术是内核开发者专门为了编译跟踪内核函数执行状态所涉及的一种轻量级内核调试技术 利用kprobe技术 内核开发人员可以在内核的绝大多数指定函数中动态插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程
  • 埋点的作用,如何埋点

    通过ThreadLocal和HandlerInterceptor实现java后台业务埋点日志功能 后端开发 埋点日志怎么做 流沙飞雪的博客 CSDN博客 埋点是什么 有什么作用 前端如何埋点 网页埋点 一只小可乐吖的博客 CSDN博客 用户
  • C#系列-继承

    00解释 1 命名空间 可以认为类是属于命名空间的 如果在当前项目中没有这个类的命名空间 需要我们手动的导入这个类所在的 命名空间 1 用鼠标去点 2 alt shift F10 3 记住命名空间 手动的去引用 2 在一个项目中引用另一个项
  • Qt快捷键(常用+非常详细)

    常用高频快捷键 Ctrl 多行注释 取消多行注释 Ctrl B 编译工程 Ctrl R 运行工程 Ctrl Alt up 向上箭头 当前行向上复制 Ctrl Alt down 向下箭头 当前行向下复制 Ctrl Shift up 向上箭头
  • ElasticSearch-快速入门(一)

    ES简介 全文搜索属于最常见的需求 开源的Elasticsearch 是目前全文搜索引擎的首选 它可以快速地储存 搜索和分析海量数据 维基百科 Stack Overflow Github 都采用它 Elastic 的底层是开源库Lucene
  • 每日作业20200525 - 图片相似度 ( 比较两个数组相似程度 )

    题目 图片相似度 输入两个由0和1构成的 3 3的矩形 如果两个矩形同坐标的值相同 则为像素点相同 相似度为两个矩形 相同像素点 总像素点 100 求图片相似度 样例输入 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0
  • 行走的代码生成器:chatGPT要让谷歌和程序员“下岗”了

    就在本周 OpenAI 又发布了一个全新的聊天机器人模型 ChatGPT 作为 GPT 3 5 系列的主力模型之一 图片来源 OpenAI 更重要的是它是完全免费公开的 所以一经发布大家立刻就玩开了 很快 网友们就被 ChatGPT 的能力
  • vue 资料合集

    div class show content p UI组件 br a href https github com ElemeFE element target blank element a 11612 饿了么出品的Vue2的web UI工
  • virtualbox 网络地址转换(NAT)

    因为个人在工作的时候条件比较充足 基本上不需要用到 virtualbox 或者 vmware 等这些虚拟软件 一个是因为他们占用本机的资源挺大的 电脑配置稍微低点就很难受了 所以说的条件充足是因为我多了一台电脑 这台就被我当作练习使用 用的
  • SpringBoot中实现文件的上传和下载

    文件上传 实现策略 将文件上传到指定路径 并将文件的路径信息存储到数据库中 文件上传前台
  • IDEA如何进行debug调试

    IDEA如何进行debug调试 第一步 设断点 打开debug 第二步 使用Debug调试的功能键 程序调试 相信是所有程序员必经之路 因为程序写出来是不可能没有错误的 当然除了非常简单的一些程序之外 相信大家肯定使用过不同的编译软件 都有
  • Vs2019 社区版 内网登录

    问题概述 1 Vistual Studio Community 是免费版 但需要登陆授权 2 由于办公使用的是内网 也是使用离线下载方法安装的 因此无法联网登陆 解决方法 1 外网打开Vistual Studio Community 201
  • 第二十一章 webpack5原理loader概述

    简介 loader其实是一个函数 用来帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块 loader的分类以及执行顺序 1 分类 pre 前置loader normal 普通loader inline 内联load
  • 编译型语言和解释型语言各自的特点和区别,Python的解释器

    编译型语言和解释型语言各自的特点和区别 Python的解释器 编译型语言 将源代码通过编译器编译生成可执行文件 机器指令 再由机器运行机器码 解释型语言 通过解释器逐行解释每一句源代码 打个比方 编译型相当于用中英文词典 翻译器 将一本英文
  • Vue如何封装组件

    要封装一个 Vue 组件 可以按照以下步骤进行操作 创建一个新的 Vue 单文件组件 vue 文件 并命名为你的组件名 例如 MyComponent vue 在组件文件中 使用
  • 关于python传参引发的一些思考

    人总有不会的 遇到一些问题深究下去必定有所收获 这个问题是在我写python爬虫项目的时候的疑问 可能是我太菜了 以前没学透彻 也可能是上学期学Java的时候按值传递的特点给搞混了 因为当时在用多线程的生产者消费者问题处理资源队列 参考别人
  • task_5 - 副本

    Task01 Task06树模型与集成学习笔记整理 1 Task01 信息论基础 决策树分类思想 用树的节点代表样本集合 通过某些判定条件来对节点内的样本进行分配 将它们划分到当前节点下的子节点 这样决策树希望各个子节点中类别的纯度之和应高
  • 内存文件系统提升磁盘性能瓶颈

    author skate time 2011 08 22 提升磁盘性能瓶颈 linux的内存文件系统 ramdisk ramfs tmpfs ramdisk 是块设备 在使用它们之前必须用选择文件系统将其格式化 并且调整文件系统大小比较麻烦
  • 【廖雪峰python进阶笔记】模块

    1 导入模块 要使用一个模块 我们必须首先导入该模块 Python使用import语句导入一个模块 例如 导入系统自带的模块 math import math 你可以认为math就是一个指向已导入模块的变量 通过该变量 我们可以访问math
  • Python Pandas导出Hbase数据到dataframe

    Python导出Hbase数据的思路 使用happybase连接Hbase 使用table scan 扫数据 将得到的数据整理为dataframe格式 将从Hbase中得到的byte类型的数据转为str类型的数据 示例代码 import h