spark源码阅读一-spark读写hbase代码分析

本文深入探讨了Spark如何通过newAPIHadoopRDD读取HBase数据,分析了TableInputFormat的分区逻辑,指出分区基于HBase的region,并讨论了数据写入HBase时saveAsNewAPIHadoopDataset的使用。
摘要由CSDN通过智能技术生成
1.读取hbase代码
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],
   classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],  
   classOf[org.apache.hadoop.hbase.client.Result])  
看看 newAPIHadoopRDD函数实现
def newAPIHadoopRDD[K, V, F <: NewInputFormat[K, V]](
    conf: Configuration = hadoopConfiguration,
    fClass: Class[F],
    kClass: Class[K],
    vClass: Class[V]): RDD[(K, V)] = withScope {
  assertNotStopped()

  // This is a hack to enforce loading hdfs-site.xml.   // See SPARK-11227 for details.   FileSystem. getLocal(conf)

  // Add necessary security credentials to the JobConf. Required to access secure HDFS.   val jconf = new JobConf(conf)
  SparkHadoopUtil. get.addCredentials(jconf)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DIRS: Distributed Image Retrieval System === 本项目实现了基于分布式数据库的图像检索系统。其中,TF-IDF作为相似度依据,MapReduce+HBase作为分布式框架。 集群配置 --- 4个节点:1个Master,3个Slave,均运行64位Centos系统 运行环境 --- Hadoop:2.7.3 Hbase:1.2.3 python 2.7.3 java 1.8.0 系统架构 --- 1. **分布式存储** 使用了HBase表存储图片信息,包括原始图片的路径、缩略图和图片的bovw(Bag of Visual Word)特征。 流程:图片 => sift特征点检测及描述符提取 => 特征点进行编码,获得图片的bovw特征向量 => 插入HBase 代码:insertTables.py, sift.py - HBase表 - ***dbinfo: { 'rowid': { 'file': [ 'path':(...), 'data':(...) ], 'feature': [ 'hist':(...), 'data':(...) ] } }*** 其中每个cell含义分别为: 'rowid':'file':'path' 原始图片路径 'rowid':'file':'data' 图片的缩略图(读写需使用pickle进行处理) 'rowid':'feature':'hist' 图片的bow特征 2. **分布式检索** 利用HBase提供的MapReduce接口,让'dbinfo'的所有条目与query计算tf-idf相似度,根据tf-idf值从小到大排序,结果取排在前面的若干数据。 流程:query => sift特征点检测及描述符提取 => vocabulary对特征点进行编码,获得图片的bovw特征向量 => 调用MapReduce程序(Java) => Map阶段: 'dbinfo'表的一个条目 -> 计算与query的相似度 -> (tfidf score, id) => Reduce阶段:(不需要) => 从hdfs中读取结果(MapReduce输出默认根据中间结果的Key值排序) => 从'dbinfo'中读取相应的图片信息,并输出结果 代码:queryMR.py, sift.py, SortDriver.java 3. **非分布式检索(做对比)** 利用倒排索引,获取query的候选集,然后从'dbinfo'中读取相应条目,在本地完成tfidf相似度计算以及排序。 代码:query.py 代码构成 --- 构建数据库 creatTables.py 创建数据库表 deleteTables.py 删除数据库表 insertTables.py 对图片进行特征提取,并将数据存入HBase中 视觉特征 sift.py 封装了sift特征提取常用操作 ransac.py,homograpy.py和warpy.py 用于特征点匹配 vocabulary.py 封装了视觉词典对象以及相关操作 trainVoc.py 训练视觉词典 检索 searcher.py 非分布式检索的运行脚本,封装了一些基本操作,包括通过倒排索引获取候选列表,获取图像的特征 query.py 对searcher进行进一步封装,提供检索接口 queryMR.py 分布式检索的运行脚本,将query的特征写入q.dat文件,作为SortDriver输入 SortDriver.java MapReduce的运行程序,计算结果输出到hdfs的/output中 辅助 imtools.py 封装了常用的操作,例如生成路径列表 HBaseConfigure.py HBase配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值