Apache spark Spark:将HBase行键的RDD映射到值的RDD

Apache spark Spark:将HBase行键的RDD映射到值的RDD,apache-spark,hbase,Apache Spark,Hbase,我有一个包含HBase行键的RDD。RDD相对较大,适合内存。我需要为每个提供的键获取一个RDD值。有没有办法做到这一点: keys.map(key => table.get(new Get(key))) 所以问题是如何获得HTable-inside-map任务的实例?我是否应该为每个分区实例化一个HLoad,然后从中获取HtTebug,或者有更好的方法吗?< P>有一些选项您可以做,但是首先考虑Snac做强>不< /强>这一事实,允许您创建RDDS的RDDS。所以这就给你留下了两个选择

我有一个包含HBase行键的RDD。RDD相对较大,适合内存。我需要为每个提供的键获取一个RDD值。有没有办法做到这一点:

keys.map(key => table.get(new Get(key)))

所以问题是如何获得HTable-inside-map任务的实例?我是否应该为每个分区实例化一个HLoad,然后从中获取HtTebug,或者有更好的方法吗?

< P>有一些选项您可以做,但是首先考虑Snac做强>不< /强>这一事实,允许您创建RDDS的RDDS。所以这就给你留下了两个选择

  • RDD列表
  • 键/值关系数据库
  • 我强烈推荐第二个,因为RDD列表可能会导致您需要执行大量reduces,这可能会大大增加您需要执行的洗牌次数。考虑到这一点,我建议您使用平面图

    下面是一些基本的框架代码,可以让你得到这个结果

    val input:RDD[String]
    val completedRequests:RDD[(String, List[String]) = input.map(a => (a, table.get(new Get(a)))
    val flattenedRequests:RDD[(String, String) = completedRequests.flatMap{ case(k,v) => v.map(b =>(k,b))
    
    现在,您可以将RDD作为一个对象来处理,如果您需要从中获得特定的信息,则可以使用reduceByKey,现在spark将能够以最佳并行性访问数据


    希望有帮助

    谢谢,但我的意思不同:问题是如何在map任务中获得一个HTable实例。我已经编辑了我的问题以便澄清。