前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark笔记9-HBase数据库基础

Spark笔记9-HBase数据库基础

作者头像
皮大大
发布2021-03-02 15:53:47
9630
发布2021-03-02 15:53:47
举报

Hbase

术语
  • 表:HBase采用表来组织数据,表由行和列组成。列被划分成多个列族
  • 列族:HBase的基本访问控制单元
  • 行:HBase由若干个行组成,每个行由行键row key进行标识
  • 列限定符:列族的数据通过列限定符来进行定位
  • 时间戳:每个单元格保存着同一份数据的多个版本,这些版本通过时间戳来进行索引
  • 单元格:在表中,通过行、列族和列限定符确定一个单元格cell。单元格中存储的数据没有数据类型,被视为字节数组byte[]。每个值都是通过单元格进行保存的。

通过四维数据:行键+列族+列限定符+时间戳,才能限定一个数据

文件读写
启动Hbase数据

Hbase是谷歌开源的big table;一个表中包很多的行和列。HBase的底层是保存在HDFS之上的。

代码语言:javascript
复制
# 启动Hadoop
cd /usr/local/hadoop
./sbin/start-all.sh

# 启动HBase
cd /usr/local/hbase
./bin/start-hbase.sh
./bin/hbase shell  # 启动hbase shell
创建表student
代码语言:javascript
复制
hbase> disable 'student'
hbase> drop 'student'  # 删除表

habse> create 'student', 'info'  # 创建表和列限定符
插入数据

关键字是put,每次插入一个单元格的数据

代码语言:javascript
复制
# 插入数据,每个单元格中插入一个数据
hbase> put 'student', '1','info:name','xueqian'
hbase> put 'student', '1','info:gender','F'
hbase> put 'student', '1','info:age','22'
配置spark

需要新建一个hbase目录,用来存放所有的jar

还有格jar包

代码语言:javascript
复制
cd /usr/local/spark/conf
vim spark-env.sh
# 最后一行添加内容
export
SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop
                       classpath):$(/usr/local/hbase/bin/hbase
                       classpath):/usr/local/spark/jars/hbase/*
读取数据

HBase内部数据的格式转成string类型

代码语言:javascript
复制
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("readHBase")
sc = SparkContext(conf=conf)
host = "localhost"
table = "student"
conf = {"hbase.zookeeper.quorum": host,
        "hbase.mapreduce.inputtable":table}
写入数据

string类型转成HBase内部的可读取形式

代码语言:javascript
复制
rom pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("readHBase")
sc = SparkContext(conf=conf)
host = "localhost"
table = "student"

keyConv = ...
valueConv = ...
conf = ...
rawData = ['3,info,name,xiaoming',  # 待插入的每个单元格的数据
          '3,info,age,26',
          '3,info,gender,M',
          '4,info,name,zhangsan',
          '4,info,age,20',
          '4,info,gender,M']

sc.parallelize(rawData).map(lambda x:(x[0],x.split(","))).saveAsNewAPIHadoopDataset(conf=conf, keyConverter=keyxConv, valueConverter=valueConv)
查看数据

切换到HBase shell的交互式环境中,通过 scan ‘student’ 进行查看

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hbase
    • 术语
      • 文件读写
        • 启动Hbase数据
          • 创建表student
            • 插入数据
              • 配置spark
                • 读取数据
                  • 写入数据
                    • 查看数据
                    相关产品与服务
                    TDSQL MySQL 版
                    TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档