首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Spark和JAVA从HBase中读取数据

用Spark和JAVA从HBase中读取数据
EN

Stack Overflow用户
提问于 2017-02-21 22:33:08
回答 2查看 7.4K关注 0票数 1

我想使用JAVA通过Spark访问HBase。除此之外,我还没有找到任何这样的例子。

这个

一个。答案是这样写的:

您也可以用Java编写以下代码

我从

如何使用spark读取hbase

代码语言:javascript
运行
复制
import org.apache.hadoop.hbase.client.{HBaseAdmin, Result}
import org.apache.hadoop.hbase.{ HBaseConfiguration, HTableDescriptor }
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.hbase.io.ImmutableBytesWritable

import org.apache.spark._

object HBaseRead {
  def main(args: Array[String]) {
    val sparkConf = new SparkConf().setAppName("HBaseRead").setMaster("local[2]")
    val sc = new SparkContext(sparkConf)
    val conf = HBaseConfiguration.create()
    val tableName = "table1"

    System.setProperty("user.name", "hdfs")
    System.setProperty("HADOOP_USER_NAME", "hdfs")
    conf.set("hbase.master", "localhost:60000")
    conf.setInt("timeout", 120000)
    conf.set("hbase.zookeeper.quorum", "localhost")
    conf.set("zookeeper.znode.parent", "/hbase-unsecure")
    conf.set(TableInputFormat.INPUT_TABLE, tableName)

    val admin = new HBaseAdmin(conf)
    if (!admin.isTableAvailable(tableName)) {
      val tableDesc = new HTableDescriptor(tableName)
      admin.createTable(tableDesc)
    }

    val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result])
    println("Number of Records found : " + hBaseRDD.count())
    sc.stop()
  }
}

谁能给我一些提示,如何找到正确的依赖,对象和东西?

看起来像是

是在

,但我实际上坚持

..。这不是应该在同一个依赖中吗?

有没有更好的方式用spark访问hbase?

EN

回答 2

Stack Overflow用户

发布于 2017-02-22 00:35:10

类在hbase-server.jar中,您需要在pom.xml中添加该依赖项。请查收

HBase和不存在的TableInputFormat

在Spark用户列表中。

代码语言:javascript
运行
复制
org.apache.hbase
    hbase-server
    1.3.0

下面是使用Spark从Hbase读取的示例代码。

代码语言:javascript
运行
复制
public static void main(String[] args) throws Exception {
    SparkConf sparkConf = new SparkConf().setAppName("HBaseRead").setMaster("local[*]");
    JavaSparkContext jsc = new JavaSparkContext(sparkConf);
    Configuration hbaseConf = HBaseConfiguration.create();
    hbaseConf.set(TableInputFormat.INPUT_TABLE, "my_table");
    JavaPairRDD javaPairRdd = jsc.newAPIHadoopRDD(hbaseConf, TableInputFormat.class,ImmutableBytesWritable.class, Result.class);
    jsc.stop();
  }
}
票数 0
EN

Stack Overflow用户

发布于 2017-03-03 05:01:51

是的。有。使用

SparkOnHbase

来自Cloudera。

代码语言:javascript
运行
复制
org.apache.hbase
    hbase-spark
    1.2.0-cdh5.7.0

以及使用HBase扫描从HBase表读取数据(如果知道要检索的行的键,则使用Bulk Get )。

代码语言:javascript
运行
复制
Configuration conf = HBaseConfiguration.create();
conf.addResource(new Path("/etc/hbase/conf/core-site.xml"));
conf.addResource(new Path("/etc/hbase/conf/hbase-site.xml"));
JavaHBaseContext hbaseContext = new JavaHBaseContext(jsc, conf);

Scan scan = new Scan();
scan.setCaching(100);

JavaRDD>>> hbaseRdd = hbaseContext.hbaseRDD(tableName, scan);

System.out.println("Number of Records found : " + hBaseRDD.count())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42370170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档