codecamp

Spark Streaming

Spark Streaming

Spark Streaming是一个基于Spark构建的微批处理流处理框架。HBase和Spark Streaming是一个很好的搭档,因为HBase可以与Spark Streaming一起提供以下好处:

  • 即时获取参考数据或配置文件数据的地方
  • 以支持仅一次处理的Spark Streaming承诺的方式存储计数或聚合的位置。

HBase-Spark模块与Spark Streaming的集成点类似于其常规的Spark集成点,因为以下命令可以直接通过Spark Streaming DStream实现。

bulkPut

用于向HBase大规模并行发送put

bulkDelete

用于向HBase大规模并行发送delete

bulkGet

用于大规模并行发送get到HBase以创建一个新的RDD

mapPartition

使用Connection对象执行Spark Map函数,以允许完全访问HBase

hBaseRDD

简化分布式扫描以创建RDD

带有DStream的bulkPut示例

下面是使用DStreams的bulkPut示例。RDD批量放置的感觉非常接近。

val sc = new SparkContext("local", "test")
val config = new HBaseConfiguration()

val hbaseContext = new HBaseContext(sc, config)
val ssc = new StreamingContext(sc, Milliseconds(200))

val rdd1 = ...
val rdd2 = ...

val queue = mutable.Queue[RDD[(Array[Byte], Array[(Array[Byte],
    Array[Byte], Array[Byte])])]]()

queue += rdd1
queue += rdd2

val dStream = ssc.queueStream(queue)

dStream.hbaseBulkPut(
  hbaseContext,
  TableName.valueOf(tableName),
  (putRecord) => {
   val put = new Put(putRecord._1)
   putRecord._2.foreach((putValue) => put.addColumn(putValue._1, putValue._2, putValue._3))
   put
  })

该hbaseBulkPut功能有三个输入:带有配置Boardcast信息的hbaseContext将我们链接到执行程序中的HBase Connections、我们将数据放入的表的表名、将DStream中的记录转换为HBase Put对象的函数。

HBase:基本Spark
使用Spark将数据批量加载到HBase
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

HBase快速入门

HBase批量加载

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }