HBase
 sql >> Baza danych >  >> NoSQL >> HBase

Spark na HBase z powłoką Spark

Niektóre drobne poprawki są potrzebne do atakowania tabel HBase z kontekstu Spark.

Najpierw szybko utwórzmy tabelę próbek HBase „t1” z 40 wierszami

[root@sandbox ~]# cat hbase_load.txt
create 't1', 'f1'
for i in '1'..'10' do \
for j in '1'..'2' do \
for k in '1'..'2' do \
rnd=(0...64).map { (65 + rand(26)).chr }.join
put 't1', "#{i}-#{j}-#{k}", "f1:#{j}#{k}", "#{rnd}"
end \
end \
end
[root@sandbox ~]# cat hbase_load.txt |hbase shell

Musisz dostosować swoją ścieżkę klas Spark (potrzeba guava 14, więc zawiera pierwszą, którą znalazłem):

[root@sandbox ~]# export SPARK_CLASSPATH=/usr/hdp/current/spark-client/lib/hbase-common.jar:/usr/hdp/current/spark-client/lib/hbase-client.jar:/usr/hdp/current/spark-client/lib/hbase-protocol.jar:/usr/hdp/current/spark-client/lib/hbase-server.jar:/etc/hbase/conf:/usr/hdp/2.3.2.0-2950/oozie/share/lib/spark/guava-14.0.1.jar

[root@sandbox ~]# spark-shell --master yarn-client

Na marginesie, SPARK_CLASSPATH jest przestarzała w Spark 1.5.x+, więc zamiast tego użyj
[root@sandbox ~]# spark-shell --master yarn-client --driver-class-path=/usr/hdp/current/spark-client/lib/hbase-common.jar:/usr/hdp/current/spark-client/lib/hbase-client.jar:/usr/hdp/current/spark-client/lib/hbase-protocol.jar:/usr/hdp/current/spark-client/lib/hbase-hadoop2-compat.jar:/usr/hdp/current/spark-client/lib/hbase-server.jar:/etc/hbase/conf:/usr/hdp/2.3.2.0-2950/oozie/share/lib/spark/guava-14.0.1.jar

Natrafiłem na błędy przy użyciu poprzedniego:[…]Powodowane przez:java.lang.IllegalStateException:nieprzeczytane dane bloku, więc użyłem pierwszej wersji (używając SPARK_CLASSPATH)Teraz nadszedł czas Scali!
scala>

import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor}
import org.apache.hadoop.hbase.client.{HBaseAdmin, Result}
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapreduce.TableInputFormat

val tableName = "t1"
val hconf = HBaseConfiguration.create()
hconf.set(TableInputFormat.INPUT_TABLE, "t1")

val hBaseRDD = sc.newAPIHadoopRDD(hconf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result])
println("records found : " + hBaseRDD.count())


[...]
2016-04-07 18:44:40,553 INFO [main] scheduler.DAGScheduler: Job 0 finished: count at <console>:30, took 2.092481 s
Number of Records found : 40
Jeśli chcesz użyć administratora HBase do wyświetlania listy tabel, tworzenia migawek lub dowolnej operacji związanej z administratorem, użyj
scala> val admin = new HBaseAdmin(hconf)

admin.listTables
A jeśli chcesz utworzyć tabelę :
val tableDesc = new HTableDescriptor(tableName)
admin.createTable(tableDesc)

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Instrukcje:włączanie uwierzytelniania i autoryzacji użytkownika w Apache HBase

  2. Hadoop InputFormat i typy InputFormat w MapReduce

  3. Wydanie CDH 6.2:Co nowego w HBase

  4. Wykorzystanie COD i CML do tworzenia aplikacji, które przewidują dane giełdowe

  5. Kopie zapasowe online Apache HBase z CopyTable