作家
登录

借hbase-rdd二次开发谈如何在Spark Core之上扩建自己的模块

作者: 来源: 2017-04-14 10:55:59 阅读 我要评论

我是51CTO学院讲师张敏,在51CTO学院 “4.20 IT充电节”(4月19~20日) 到来之际,和大年夜家分享一下Spark Core之上扩建本身的模块的经验。正文来啦~~~

借hbase-rdd二次开辟谈如安在Spark Core之上扩建本身的模块

hbase-rdd是一个构建在SparkContext基本之上的用于对Hbase进行增删改查的第三方开源模块,今朝最新版本为0.7.1。今朝该rdd在操作hbase时,默认调用隐式办法。

在应用hbase-rdd插件的过程中,我在思虑,默认的RDD上是没有toHbase办法的,那为什么惹人hbase-rdd包之后,RDD之上就有toHbase办法了?经由查看源码,发明hbase-rdd包中供给了两个隐式办法:

  1. implicitdef stringToBytes(s: String): Array[Byte] = {  
  2. Bytes.toBytes(s)  

将RDD的key转换成字节b,然后调用Hbase的put(b)办法保存rowkey,之后将RDD的每一行存入hbase。

在轨迹图绘制项目数据计算中,我们推敲到hbase的rowkey的设计——尽量削减rowkey存储的开销。固然hbase-rdd最终的rowkey默认都是采取字节数组,但这个处所我们欲望按本身的方法组装rowkey。应用MD5(imei)+dateTime构成的字节数组作为rowkey。是以默认的hbase-rdd供给的办法是不知足我们存储需求的,须要对源代码进行修改。在toHbase办法中,有一个convert办法,该办法将对RDD中的每一行数据进行转化,应用RDD中的key生成Put(Bytes.toBytes(key))对象,该对象为之后存储Hbase供给rowkey。

在convert函数中,对其实现进行了改革,hbase-rdd默认应用stringToBytes隐式函数将RDD的String类型的key转换成字节数组,这里我们须要改革,不使stringToBytes隐式办法,而是直接生成字节数据。

  1. protected def convert(id: String, values: Map[String, Map[String, A]], put: PutAdder[A]) = {  
  2. val strs = id.split("," 
  3. val imei = strs {0}  
  4. val dateTime = strs {1}  
  5. val b1 = MD5Utils.computeMD5Hash(imei.getBytes())  
  6. val b2 = Bytes.toBytes(dateTime.toLong)  
  7. val key = b1.++(b2)  
  8. val p = new Put(key)//改革  
  9. var empty = true  
  10. for {  
  11. (family, content) <- values  
  12. (key, value) <- content  
  13. } {  
  14. empty = false  
  15. if (StrUtils.isNotEmpty(family) &&StrUtils.isNotEmpty(key)) {  
  16. put(p, family, key, value)  
  17.  
  18.  
  19. if (empty) None else Some(new ImmutableBytesWritable, p)  

(19-20号两天,100门视频课程免单抢,更有视频课程会员享6折,非会员享7折,套餐折上8折,微职位立减2000元钜惠)

如许就实现了应用本身的方法构建rowkey,当然基于此思惟我们可以应用随便率性的方法构建rowkey。

  1. implicitdef toHBaseRDDSimple[A](rdd: RDD[(String, Map[String, A])])(implicit writer: Writes[A]): HBaseWriteRDDSimple[A] =new HBaseWriteRDDSimple(rdd, pa[A]) 

      推荐阅读

      深度学习概述:从感知机到深度网络

    近些年来,人工智能范畴又活泼起来,除了传统了学术圈外,Google、Microsoft、facebook等工业界优良企业也纷纷成立相干研究团队,并取得了很多令人注目标结不雅。这要归功于社交收集用户产>>>详细阅读


    本文标题:借hbase-rdd二次开发谈如何在Spark Core之上扩建自己的模块

    地址:http://www.17bianji.com/lsqh/34785.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)