spark3.0.1版本查询Hbase数据库例子

需求背景

现有需求,需要采用spark查询hbase数据库的数据同步到中间分析库,记录spark集成hbase的简单例子代码

scala 复制代码
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.{ConnectionFactory, Scan}
import org.apache.hadoop.hbase.util.Bytes
import org.apache.spark.sql.SparkSession

object ReadHBaseData {
  def main(args: Array[String]): Unit = {
    // 创建SparkSession
    val spark = SparkSession.builder()
      .appName("ReadHBaseData")
      .master("local")
      .getOrCreate()
      
    // 创建HBase配置
    val conf = HBaseConfiguration.create()

    // 设置HBase连接参数
    conf.set("hbase.zookeeper.quorum", "localhost")
    conf.set("hbase.zookeeper.property.clientPort", "2181")

    // 创建HBase连接
    val connection = ConnectionFactory.createConnection(conf)

    // 创建HBase表
    val tableName = "my_table"
    val table = connection.getTable(TableName.valueOf(tableName))

    // 创建HBase扫描对象
    val scan = new Scan()

    // 设置要读取的列族和列
    scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("column1"))
    scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("column2"))

    // 执行HBase扫描
    val scanner = table.getScanner(scan)

    // 遍历扫描结果并将结果转换为RDD
    val rdd = spark.sparkContext.parallelize(scanner.iterator().asScala.map(result => {
      val rowKey = Bytes.toString(result.getRow)
      val value1 = Bytes.toString(result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("column1")))
      val value2 = Bytes.toString(result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("column2")))
      (rowKey, value1, value2)
    }).toList)

    // 将RDD转换为DataFrame
    val df = spark.createDataFrame(rdd).toDF("rowKey", "value1", "value2")

    // 显示DataFrame内容
    df.show()

    // 关闭HBase连接
    scanner.close()
    table.close()
    connection.close()

    // 关闭SparkSession
    spark.stop()
  }
}
 
相关推荐
暴躁小师兄数据学院14 小时前
【AI大数据工程师特训笔记】第16讲:大数据环境安装
大数据·hadoop·笔记·flink·spark·database
IDIOT___IDIOT1 天前
Docker 集群运行 Spark 的一些记录
docker·容器·spark
工业互联网专业2 天前
基于Spark的共享单车数据存储系统的设计与实现_flask+spider
spark·flask·毕业设计·源码·课程设计·spider·共享单车
X.AI6662 天前
英伟达RTX Spark发布:AI PC的下一战,不是跑分,而是本地Agent
大数据·人工智能·spark
KaMeidebaby3 天前
卡梅德生物技术快报|peg 修饰调控 MXene/WS2 异质结,氨气传感器制备与机理研究
大数据·前端·人工智能·架构·spark·新浪微博
零壹AI实验室3 天前
NVIDIA RTX Spark深度测评:个人AI智能体时代真的来了?
人工智能·ajax·spark
罗小罗同学4 天前
Nat Med发表SPARK智能体框架,可以自主思考、提出假设、设计实验并验证结果,让AI也能主动发现肿瘤生物学规律
大数据·人工智能·spark·医学图像处理
KaMeidebaby5 天前
卡梅德生物技术快报|Pull Down 实验在 lncRNA - 蛋白互作机制研究中的应用实例解析
大数据·前端·架构·spark·新浪微博
数据仓库_晨曦6 天前
【无标题】
大数据·sql·spark
元让_vincent6 天前
Spark 2.0:面向 Web 的 3DGS 可视化与大场景渲染平台详解
前端·3d·spark·渲染·轻量化·3dgs·lod