簡體   English   中英

如何從Spark.scala訪問HBase? 是否有明確定義的Scala API?

[英]How to access HBase from Spark.scala? is there clear defined scala api?

如何從Spark.scala訪問HBase? 是否有明確定義的Scala API? 我在看數據幀級別而不是RDD。

網絡上有許多可用的選項,例如Apache HBase Connector SparkOnHBase,以及那里的更多選項。

但是,了解或使用該行業中最常用的方法將非常高興。

感謝幫助。

Hortonworks的Spark-Hbase連接器被廣泛用於從Spark訪問HBase。 它在低級RDD和數據幀中都提供了API。

連接器要求您定義HBase表的架構。 下面是為名稱為table1,行鍵為鍵,列數為(col1-col8)的HBase表定義的架構示例。 請注意,行鍵還必須詳細定義為具有特定cf(行鍵)的列(col0)。

def catalog = s"""{
        |"table":{"namespace":"default", "name":"table1"},
        |"rowkey":"key",
        |"columns":{
          |"col0":{"cf":"rowkey", "col":"key", "type":"string"},
          |"col1":{"cf":"cf1", "col":"col1", "type":"boolean"},
          |"col2":{"cf":"cf2", "col":"col2", "type":"double"},
          |"col3":{"cf":"cf3", "col":"col3", "type":"float"},
          |"col4":{"cf":"cf4", "col":"col4", "type":"int"},
          |"col5":{"cf":"cf5", "col":"col5", "type":"bigint"},
          |"col6":{"cf":"cf6", "col":"col6", "type":"smallint"},
          |"col7":{"cf":"cf7", "col":"col7", "type":"string"},
          |"col8":{"cf":"cf8", "col":"col8", "type":"tinyint"}
        |}
      |}""".stripMargin

要將HBase表讀取為數據框:

val df = spark
  .read
  .options(Map(HBaseTableCatalog.tableCatalog->cat))
  .format("org.apache.spark.sql.execution.datasources.hbase")
  .load()

要將Dataframe寫入HBase表:

df.write.options(
  Map(HBaseTableCatalog.tableCatalog -> catalog, HBaseTableCatalog.newTable -> "5"))
  .format("org.apache.spark.sql.execution.datasources.hbase")
  .save()

有關更多詳細信息: https : //github.com/hortonworks-spark/shc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM