| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 用户画像-1: 大批量数据导入HBase -> 正文阅读 |
|
[大数据]用户画像-1: 大批量数据导入HBase |
数据导入HBase中常用的有三种方式:sqoop, HBase importTsv, HBase Bulkload,这三种方式,各有优缺点,下面将逐一介绍这三种方案的优缺点. 1.?Sqoop直接导入
可以使用
SQOOP
将
MySQL
表的数据导入到
HBase
表中,指定
表的名称、列簇及
RowKey
,范
例如下所示:
参数含义解释:
知识拓展:如何使用SQOOP进行增量导入数据至HBase表,范例命令如下: 例一:
1
、
-D sqoop.hbase.add.row.key=true
是否将
rowkey
相关字段写入列族中,默认为
false
,默认情况下你将在列族中看不到任何
row
key
中的字段。注意,该参数必须放在
import
之后。
2
、
--hbase-create-table
如果
hbase
中该表不存在则创建
3
、
--hbase-table
对应的
hbase
表名
4
、
--hbase-row-key hbase
表中的
rowkey,
注意格式
5
、
--column-family hbase
表的列族
例二:
相关增量导入参数说明:
使用
SQOOP
导入数据到
HBase
表中,有一个限制:
需要指定
RDBMs
表中的某个字段作为
HBase
表的
ROWKEY
,如果
HBase
表的
ROWKEY
为多
个字段组合,就无法指定,所以此种方式有时候不能使用。
2. HBase ImportTSV
ImportTSV
功能描述:
使用如下命令,查看
HBase
官方自带工具类使用说明:
执行上述命令提示如下信息:
其中
importtsv
就是将文本文件(比如
CSV
、
TSV
等格式)数据导入
HBase
表工具类,使用
说明如下:
分别演示采用直接
Put
方式和
HFile
文件方式将数据导入
HBase
表,命令如下:
2.1 直接导入Put方式
上述命令本质上运行一个
MapReduce
应用程序,将文本文件中每行数据转换封装到
Put
对象,然后插入到
HBase
表中。
2.2 转换为HFile文件,再加载至表
缺点:
1
)、
ROWKEY
不能是组合主键 只能是某一个字段
2
)、当表中列很多时,书写
-Dimporttsv.columns
值时很麻烦,容易出错
3.?HBase Bulkload
在大量数据需要写入
HBase
时,通常有
put
方式和
bulkLoad
两种方式。
1
、
put
方式为单条插入,在
put
数据时会先将数据的更新操作信息和数据信息
写入
WAL
,
在写入到
WAL
后,
数据就会被放到
MemStore
中
,当
MemStore
满后数据就会被
flush
到磁盘
(
即形成
HFile
文件
)
,在这种写操作过程会涉及到
flush
、
split
、
compaction
等操作,容易造
成节点不稳定,数据导入慢,耗费资源等问题,在海量数据的导入过程极大的消耗了系统
性能
,避免这些问题最好的方法就是使用
BulkLoad
的方式来加载数据到
HBase
中。
2
、
BulkLoader
利用
HBase
数据
按照
HFile
格式存储在
HDFS
的原理,使用
MapReduce
直接批量
生成
HFile
格式文件后,
RegionServers
再将
HFile
文件移动到相应的
Region
目录下
。
?
?
Bulkload
过程主要包括三部分:
1
)、
Extract
,异构数据源数据导入到
HDFS
之上。
2
)、
Transform
,通过用户代码,可以是
MR
或者
Spark
任务将数据转化为
HFile
。
3
)、
Load
,
HFile
通过
loadIncrementalHFiles
调用将
HFile
放置到
Region
对应的
HDFS
目录上,该过程可能涉及到文件切分。
1
、不会触发
WAL
预写日志,当表还没有数据时进行数据导入不会产生
Flush
和
Split
。
2
、减少接口调用的消耗,是一种快速写入的优化方式。
Spark
读写
HBase
之使用
Spark
自带的
API
以及使用
Bulk Load
将大量数据导入
HBase
:
https://www.jianshu.com/p/b6c5a5ba30af
?
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 13:20:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |