spark 从 hbase 读取数据,worker 是不是需要从远程驱动程序中获取分区数据?

Posted

技术标签:

【中文标题】spark 从 hbase 读取数据,worker 是不是需要从远程驱动程序中获取分区数据?【英文标题】:spark read data from hbase, did workers need to get paritions data from remote driver program?spark 从 hbase 读取数据,worker 是否需要从远程驱动程序中获取分区数据? 【发布时间】:2017-07-28 02:51:57 【问题描述】:

spark 从 hbase 读取数据,如 //创建rdd

val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], 
  classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],
  classOf[org.apache.hadoop.hbase.client.Result])

例如,hBaseRDD 有 5 个分区,现在 worker 上的 executor 获取分区数据进行计算,他们必须从远程驱动程序获取数据? (不像从hdfs读取,作为hadoop slave的每个worker都有hdfs文件复制)

【问题讨论】:

【参考方案1】:

Spark 与 HBase 集成,数据局部性原则与 Hadoop map-reduce 作业相同:spark 将尝试将输入分区(hbase 区域)分配给同一物理机上的 worker,因此无需直接获取数据远程驱动程序。

【讨论】:

以上是关于spark 从 hbase 读取数据,worker 是不是需要从远程驱动程序中获取分区数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spark 从 hbase 读取

Spark读取Hbase中的数据

Spark读取Hbase中的数据

Spark读取Hbase中的数据

Spark 读取 Hbase 优化 --手动划分 region 提高并行数

Spark 读取 HBase 数据