Tüm Ürünler
Search
Belge Merkezi

Lindorm:Spark ile LindormTable'a Erişim

Son Güncelleme:Oct 07, 2026

Apache Spark, HBase bağlayıcısı aracılığıyla LindormTable'da depolanan verileri sorgulayabilir ve analiz edebilir. Bu konu; bağlantıyı yapılandırma, HBase tablo şemanızı bir Spark tablosuna eşleme ve Spark SQL sorgularını çalıştırma adımlarında size rehberlik eder.

Ön Koşullar

Başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:

  • LindormTable sürüm 2.4.3 veya üzeri

  • İstemci IP adresinizin Lindorm örneği izin listesine eklenmiş olması. Bkz. Configure whitelists

  • Java için HBase API'sinin LindormTable uç noktası. Bkz. View endpoints

Kullanım Notları

  • Bir Lindorm örneğine İnternet üzerinden erişiyorsanız veya Lindorm örneğiniz tek düğümlü bir örnekse, devam etmeden önce SDK'nızı yükseltin ve yapılandırmalarınızı güncelleyin. Bkz. Use the ApsaraDB for HBase API for Java to connect to and use LindormTable içindeki 1. Adım.

  • Uygulamanız bir Elastic Compute Service (ECS) örneğinde çalışıyorsa aşağıdaki koşulları sağladığınızdan emin olun:

    • Lindorm örneğiniz ve ECS örneğiniz aynı bölgede bulunmalıdır. Ağ gecikme süresini azaltmak için bunları aynı alanda dağıtın.

    • Lindorm örneğiniz ve ECS örneğiniz aynı VPC içinde yer almalıdır.

Genel Süreç

Spark'ı LindormTable'a bağlama süreci şu adımlardan oluşur:

  1. LindormTable bağlantı uç noktasını yapılandırın.

  2. Bir HBase tablosu oluşturun ve veri ekleyin.

  3. HBase sütunlarını bir Spark tablosuna eşlemek için bir katalog tanımlayın.

  4. Kataloğu kullanarak Spark tablosunu oluşturun.

  5. Spark tablosu üzerinde Spark SQL sorguları çalıştırın.

Bağlantıyı Yapılandırma

hbase.zookeeper.quorum parametresini Java için HBase API'sinin LindormTable uç noktasına ayarlayın. Aşağıdaki yöntemlerden birini kullanabilirsiniz:

Yöntem 1: Yapılandırma dosyası

Aşağıdaki satırı hbase-site.xml dosyasına ekleyin:

<configuration>
    <!-- LindormTable endpoint of the HBase API for Java -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>ld-m5ef25p66n5es****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020</value>
    </property>
</configuration>

Yöntem 2: Yapılandırma nesnesi

// Create a Configuration object.
val conf = HBaseConfiguration.create()
// Specify the LindormTable endpoint of the HBase API for Java.
conf.set("hbase.zookeeper.quorum", "ld-m5ef25p66n5es****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020")

Örnek

Aşağıdaki örnek; bağlantıyı yapılandırma, HBase tablosu oluşturma, veri ekleme, katalog ile Spark tablosu tanımlama ve COUNT() sorgusu çalıştırma dahil olmak üzere uçtan uca iş akışını gösterir.

1. Adım: Bağlantıyı yapılandırma

var conf = HBaseConfiguration.create
conf.set("hbase.zookeeper.quorum", "ld-m5ef25p66n5es****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020")

2. Adım: HBase tablosu oluşturma

val hbaseTableName = "testTable"
val cf = "f"
val column1 = cf + ":a"
val column2 = cf + ":b"
var namespace = "spark_test"

val admin = ConnectionFactory.createConnection(conf).getAdmin()
val tableName = TableName.valueOf(namespace, hbaseTableName)
val htd = new HTableDescriptor(tableName)
htd.addFamily(new HColumnDescriptor(cf))
admin.createTable(htd)

3. Adım: Veri ekleme

val k: Array[Byte] = new Array[Byte](3)
val famAndQf = KeyValue.parseColumn(Bytes.toBytes(column1))
val puts = new util.ArrayList[Put]()
var i = 0

for (b1 <- ('a' to 'z')) {
  for (b2 <- ('a' to 'z')) {
    for (b3 <- ('a' to 'z')) {
      if (i < 10) {
        k(0) = b1.toByte
        k(1) = b2.toByte
        k(2) = b3.toByte
        val put = new Put(k)
        put.addColumn(famAndQf(0), famAndQf(1), ("value_" + b1 + b2 + b3).getBytes())
        puts.add(put)
        i = i + 1
      }
    }
  }
}

val conn = ConnectionFactory.createConnection(conf)
val table = conn.getTable(tableName)
table.put(puts)

4. Adım: Katalog kullanarak Spark tablosu oluşturma

Katalog, HBase tablonuz ile Spark tablosu arasındaki eşlemeyi tanımlar. Satır anahtarını belirtir ve her Spark sütununu bir HBase sütun ailesi ile sütun niteleyicisine eşler. Katalog, CREATE TABLE deyiminin OPTIONS yan tümcesinde JSON dizesi olarak geçirilir.

val sparkTableName = "spark_hbase"

val createCmd =
  s"""CREATE TABLE ${sparkTableName} USING org.apache.hadoop.hbase.spark
     |OPTIONS ('catalog'=
     |'{"table":{"namespace":"${namespace}", "name":"${hbaseTableName}"},
     |"rowkey":"rowkey",
     |"columns":{
     |"col0":{"cf":"rowkey", "col":"rowkey", "type":"string"},
     |"col1":{"cf":"f", "col":"a", "type":"string"},
     |"col2":{"cf":"f", "col":"b", "type":"string"}}}')
  """.stripMargin

sparkSession.sql(createCmd)

5. Adım: Spark SQL sorgusu çalıştırma

val result = sparkSession.sql("select count(*) from " + sparkTableName)
val sparkCounts = result.collect().apply(0).getLong(0)
println("Row count: " + sparkCounts)

Sonraki Adımlar