HBase实操 | 如何使用HBase存储文本文件

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介:
1.文档编写目的



Fayson在前面的文章中介绍了《如何在CDH中使用Solr对HDFS中的JSON数据建立全文索引》和《如何使用Flume准实时建立Solr的全文索引》,假如我们有大量的文本文件,我们应该如何保存到Hadoop中,并实现文本文件的全文检索呢。为了介绍如何对文本文件进行全文检索,本文会先介绍如何使用HBase保存文本文件。虽然HDFS中也可以直接保存这种非结构化数据,但是我们知道像这种文本文件,一般都是10KB~1MB的小文件,因为HDFS并不擅长存储大量小文件,所以这里选择HBase来保存。



内容概述

1.文件处理流程

2.准备上传文件的Java代码

3.运行代码

4.Hue中查询验证



测试环境

1.RedHat7.4

2.CM5.14.3

3.CDH5.14.2

4.集群未启用Kerberos



2.文件处理流程
1c8408383a69d8d993159338c0f95cd662e27ea2

1.如上图所示,Fayson先在本地准备了一堆记事本文件,有中文内容的,英文内容的,有中文名的,也有英文名的。
f9530ddc6a953ec5b2bf7e8989c22d5a602bf083

中文内容示例
3e45c12e913f4401b050df807682261234d73a44
04a590dc077ca79e0fcecf37de7f4ec51439591e
2.然后通过Java程序遍历本地的文件夹所有文本文件入库到HBase,在入库过程中,我们读取文本文件的文件名作为Rowkey,另外将整个文本内容转为bytes存储在HBase表的一个column里。

3.最后可以通过Hue来进行查看文本文件的内容,当然你也可以考虑对接到你自己的查询系统。



3.准备上传文件的Java代码



1.首先是准备Maven文件
cd5f304c0029e86d56ce26bbe869a95faaffaea3
6fac34262525b483de0c7e3de37ae038f3036fa7
8f5f6ffb00e5bc35c24cbe0b666cbdb98f5bbb66

2.准备上传文件到HBase的Java代码 2.准备上传文件到HBase的Java代码
380d33cf4b2ace7ee5d759c62e0e854ce2719c63
09b86b3bc5d9fed80f4b06660f9a0ee7d313cb17
dba17e82ba9364edf1336bcee8ecbf5bc1eee678

2.准备上传文件到HBase的Java代码
b95ec03053b8165a641f75f27250ad45b9e0a753
3f7d4fb23bc21943b041d558cf21934c6734c6ae
ae240e656afc90a695f55965f7fc899ffc61a488
56271bf7854fd07a0a2a87e41f402660952f92f9
4.运行代码




1.首先我们在HBase中建一张表用来保存文本文件
578df5fde4df90a0cc855234b602169cfeb38829

2.配置客户端Windows机器的hosts文件
bdc123038f73e44ee48296ae5d4af7c95d0b95dd

3.注意修改代码中的配置项,如文本文件所在的目录,集群的Zookeeper地址等。Fayson这里为了使用方便,就不打成jar包到集群运行,直接在Eclipse里运行代码。
b748a6c10abdc722bab062f58e3750b1f496ca83
4.到HBase中进行查询确认
ec43454d107500a78c0127c278650b314ad9b43c


一共21条,表明全部入库成功
a1151e340a5fbdbbdcabbe6c52c21e5011f50a25

5.Hue中查询验证




1.从Hue中进入HBase的模块
472f505b05f4b6a1de0947b7e14a579749cfce66

单击某个column,可以查看整个文本内容
0808f16b91bd495752ec62087ab49c9d5bf2d0e2


2.查询某一个Rowkey进行测试
57f7d39d56669f970176df0e16da86a99fc611a6

本文所使用的代码源码GitHub地址:

https://github.com/fayson/cdhproject/blob/master/hbasedemo/src/main/java/com/cloudera/hbase/Text2HBase.java

https://github.com/fayson/cdhproject/tree/master/hbasedemo/full-text-index


d3f2f0da5b6761a64c7049db7719525a2c492a0c


大家工作学习遇到HBase技术问题,把问题发布到HBase技术社区论坛http://hbase.group,欢迎大家论坛上面提问留言讨论。想了解更多HBase技术关注HBase技术社区公众号(微信号:hbasegroup),非常欢迎大家积极投稿。



096973d69f34b1380151180fd0a8ff2cade5bced


HBase技术交流社区 - 阿里官方“HBase生态+Spark社区大群”点击加入:https://dwz.cn/Fvqv066s

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
8月前
|
存储 NoSQL 分布式数据库
Hbase+ES和MongoDB存储大数据的选用
Hbase+ES和MongoDB存储大数据的选用
232 0
|
5月前
|
存储 NoSQL 分布式数据库
分布式NoSQL列存储数据库Hbase(一)Hbase的功能与应用场景、基本设计思想
分布式NoSQL列存储数据库Hbase(一)Hbase的功能与应用场景、基本设计思想
164 0
|
10月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的重要机制和原理的存储原理
HBase是一个分布式数据库系统,基于Google的BigTable和Apache Hadoop的HDFS构建。它提供了一个高性能、可扩展的数据库平台,适用于大规模的数据存储和处理。在阿里云开发者社区中,很多开发者都会使用HBase进行数据存储和处理。本文将介绍HBase的存储原理和重要机制。
345 0
|
存储 前端开发 Cloud Native
基于 HBase 快速构架海量订单存储系统|学习笔记
快速学习基于 HBase 快速构架海量订单存储系统
346 0
基于 HBase 快速构架海量订单存储系统|学习笔记
|
存储 缓存 分布式计算
Hadoop原理与技术——Hbase实操
Hadoop原理与技术——Hbase实操
109 0
Hadoop原理与技术——Hbase实操
|
存储 搜索推荐 Java
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
快速学习如何基于 HBase 构建图片、视频数据的统一存储检索方案
751 0
如何基于 HBase 构建图片、视频数据的统一存储检索方案|学习笔记
|
存储 缓存 NoSQL
HBase与HDFS之间的WAL(HLog)存储机制答疑解惑
HBase与HDFS之间的WAL(HLog)存储机制答疑解惑
|
存储 分布式数据库 Hbase
《实战-如何基于HBase构建图片视频数据的统一存储检索方案》电子版地址
实战-如何基于HBase构建图片视频数据的统一存储检索方案
132 0
《实战-如何基于HBase构建图片视频数据的统一存储检索方案》电子版地址
|
存储 JSON 算法
基于HBase构建千亿级文本数据相似度计算与快速去重系统
前言 随着大数据时代的到来,数据信息在给我们生活带来便利的同时,同样也给我们带来了一系列的考验与挑战。本文主要介绍了基于 Apache HBase 与 Google SimHash 等多种算法共同实现的一套支持百亿级文本数据相似度计算与快速去重系统的设计与实现。该方案在公司业务层面彻底解决了多主题海量文本数据所面临的存储与计算慢的问题。 一. 面临的问题 1. 如何选择文本的相似度计算或去重算法? 常见的有余弦夹角算法、欧式距离、Jaccard 相似度、最长公共子串、编辑距离等。这些算法对于待比较的文本数据不多时还比较好用,但在海量数据背景下,如果每天产生的数据以千万计算,我们如何对于这些海
662 0