Прочитайте таблицу HBase с предложением where, используя Spark

#java #scala #apache-spark #hbase #hortonworks-data-platform

#java #scala #apache-spark #hbase #hortonworks-платформа данных

Вопрос:

Я пытаюсь прочитать таблицу HBase с помощью Spark Scala API.

Пример кода:

 conf.set("hbase.master", "localhost:60000")
conf.set("hbase.zookeeper.quorum", "localhost")
conf.set(TableInputFormat.INPUT_TABLE, tableName)
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result])
println("Number of Records found : "   hBaseRDD.count())
 

Как добавить where предложение, если я использую newAPIHadoopRDD ?

Или нам нужно использовать any Spark Hbase Connector для достижения этой цели?

Я видел приведенный ниже соединитель Spark Hbase, но я не вижу никакого примера кода с предложением where.

https://github.com/nerdammer/spark-hbase-connector

Ответ №1:

Для достижения этой цели вы можете использовать SHC connector от HortonWorks.

https://github.com/hortonworks-spark/shc

Вот пример кода с Spark 2.

  val catalog =
        s"""{
            |"table":{"namespace":"default", "name":"my_table"},
            |"rowkey":"id",
            |"columns":{
            |"id":{"cf":"rowkey", "col":"id", "type":"string"},
            |"name":{"cf":"info", "col":"name", "type":"string"},
            |"age":{"cf":"info", "col":"age", "type":"string"}
            |}
            |}""".stripMargin

    val spark = SparkSession
        .builder()
        .appName("hbase spark")
        .getOrCreate()

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

    df.show()
 

Затем вы можете использовать любой метод в своем фрейме данных. Пример :

 df.where(df("age") === 20)
 

Комментарии:

1. Я пытаюсь использовать его, другие поля выводятся нормально, но cf: rowkey не выводится в целевую таблицу, является ли это свойством SHC?