Spark笔记9-HBase数据库基础

2021-03-02 15:53:47 浏览数 (1)

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’ 进行查看

0 人点赞