因为hbase的存储只支持文本。但当我们需要要一些文件类型上传到hbase上的时候,如果使用文件流,将它转成文本类型,上传下载是没有问题,可是这样一来,新生成的文件与原始文件的里的格式(如DOC里的图片)这样的东西就不存在了,这样的话,就没有什么意义了。
因此,上传到hbase的时候,可以通过将文件流转换成BASE64的编码,这样,上传下载仍是原文件。但是要注意的是,该文件的格式,如果格式不统一的话,还是不会出来的。
我就遇到过这样的问题,该文件是docx格式的,我下载后转成doc的,就会出问题。
下面是实现代码
public String getSource(String URL) throws IOException{
File file = new File(URL);
file.length();
FileInputStream is = new FileInputStream(file);
byte[] bytes = new byte[(int) file.length()];
int len=0;
while( (len = is.read(bytes)) != -1 ){
is.read(bytes);
}
is.close();
BASE64Encoder be = new BASE64Encoder();
return be.encode(bytes);
}
public String down(String tablename,String rowkey) throws IOException{
BASE64Decoder db = new BASE64Decoder();
String Content="";
HTable talbe =new HTable(tablename);
Result result = null;
Get get = new Get(Bytes.toBytes(Id));
get.addFamily(Bytes.toBytes("property"));//这是在hbase上存储的该文件的一些属性
get.addFamily(Bytes.toBytes("content"));//这是在hbase上存储该文件的BASE64编码的列族名
result = table.get(get);
table.close();
Content = Bytes.toString(r.getValue(Bytes.toBytes("content"), Bytes
.toBytes("content")));//获得到该文件的文本
String title=Bytes.toString(r.getValue(Bytes.toBytes("property"),Bytes.toBytes("title")));
String downurl=tmp+title;
byte c[] = bd.decodeBuffer(tmp);
FileOutputStream out = new FileOutputStream(new File(downurl));
out.write(c);
out.close();
return downurl;
}
这是临时写的简宜代码,有很多不足之处。
分享到:
相关推荐
3. **配置HBase**:编辑`conf/hbase-site.xml`文件,设置必要的配置参数,如`hbase.rootdir`(HBase的数据目录,通常在HDFS上)、`hbase.zookeeper.quorum`(Zookeeper集群的服务器列表)等。 4. **配置Hadoop**:...
在Java编程环境中,将本地文件读取并上传到HBase是一项常见的任务,特别是在大数据处理和存储的场景下。HBase是一个分布式、版本化的NoSQL数据库,基于Apache Hadoop,适用于大规模数据存储。以下是一个详细的过程,...
HBase+SpringBoot实战分布式文件存储 资源永久有效哦
HBase是一个基于Apache Hadoop的数据存储系统,适用于处理大规模、分布式、实时的数据存储和查询。而Hive则是一个数据仓库工具,它允许用户使用SQL-like语言(HQL)对Hadoop集群上的大量数据进行分析和查询。 标题...
HBase 是一个开源的、分布式的、版本化的 NoSQL 数据库(也即非关系型数据库),它利用 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)提供分布式数据存储。与传统的关系型数据库类似,HBase 也以...
7. **监控和故障排查**:如何通过HBase的仪表盘和日志进行监控,以及在遇到问题时的排查方法。 8. **复制和备份**:HBase支持数据复制以提高可用性,文档会解释如何配置复制和进行数据备份与恢复。 9. **安全与...
在大数据处理的世界里,Apache HBase是一种分布式的、面向列的NoSQL数据库系统,特别适合于存储大量半结构化数据。HBase的分布式特性使其在大数据场景下表现出色,而Python作为一门强大的编程语言,其社区提供了丰富...
例如,你可以在这里设置`hbase.rootdir`来指定HBase的数据存储位置(通常是在HDFS上),以及`hbase.zookeeper.quorum`来指定Zookeeper服务器的地址,用于协调集群中的各个节点。 2. **hbase-env.sh**: 这个脚本文件...
HDFS的分布式特性使得视频文件可以被分割成多个块并分散在集群的不同节点上,这样不仅提高了存储效率,也便于多线程并行访问,加快了读取速度。每个视频文件在HDFS上都会有一个唯一的路径标识,这为我们后续的索引...
在IT领域,HBase是一个分布式、面向列的开源数据库,它是构建在Apache Hadoop文件系统(HDFS)之上的,特别适合处理大规模数据。这里提到的"基于虚拟机集hbase1.2.1配置文件"是针对一个由一个Master节点和三个Slave...
本文档详细描述了如何采用HBase存储海量图片,以及如何将大批量的小文件写成sequenceFile文件格式。海量图片的存储是通过HBase实现的,HBase是一种面向列的NoSQL数据库,特别适合存储海量数据。 一、直接上传本地...
在Java开发领域,Spring框架的广泛使用与HBase这样的大数据存储系统的结合日益紧密。"hbase jar包.zip" 提供了整合Spring与HBase所需的关键库文件,使得开发者能够高效地利用Spring进行HBase的操作。接下来,我们将...
在搭建Hadoop框架中的HBase集群之前,理解并熟悉HBase的配置文件是至关重要的步骤。HBase是一款基于Google Bigtable理念设计的开源分布式数据库,它构建于Hadoop之上,适用于处理海量数据。HBase提供了高可靠性、高...
全称为Hadoop Distributed File System上的基础结构(HBase on Hadoop Distributed File System),是一种分布式的、面向列的开源数据库,它构建在Apache Hadoop文件系统(HDFS)之上,提供高可靠性、高性能、可伸缩...
Hadoop主要负责大规模数据的分布式存储和计算,而HBase则是构建在Hadoop之上的分布式列式数据库,适合实时查询和大数据分析。本主题将详细讲解如何将HDFS(Hadoop Distributed File System)上的文件导入到HBase中,...
HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。 HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)...
HBase是一个分布式的、面向列的数据库,构建在Apache Hadoop和Apache ZooKeeper之上。这种数据库通常用于处理大规模的非结构化数据集,因此与大数据紧密相关。HBase具有高扩展性、高性能、以及灵活的数据模型。下面...
HBase,全称Apache HBase,是构建在Hadoop分布式文件系统(HDFS)之上、面向列的开源数据库,主要用于处理大规模数据。HBase的设计理念是支持实时读写,适合大数据场景下的快速随机访问。在本专题中,我们通过分析...
本文将详细探讨如何使用Zabbix这一强大的开源监控工具来监控Hbase集群,以及如何利用“hbase监控文件.zip”中的资源进行部署。 HBase是一个基于Apache Hadoop的非关系型分布式数据库(NoSQL),它设计用于处理海量...
总结来说,Apache Atlas 2.2版本与HBase的集成,涉及到HBase的下载、安装、配置,以及在Atlas中配置HBase的元数据管理。通过这样的集成,企业可以实现对大数据生态系统的高效管理和治理,确保数据的安全和合规性。在...