HBase
 sql >> Teknologi Basis Data >  >> NoSQL >> HBase

Spark di HBase dengan Spark shell

Beberapa penyesuaian kecil diperlukan untuk menyerang tabel HBase dari konteks Spark.

Mari kita cepat membuat “t1″ tabel sampel HBase dengan 40 baris

[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

Anda perlu menyesuaikan classpath Spark Anda (diperlukan jambu 14 jadi sertakan yang pertama saya temukan):

[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

Sebagai catatan tambahan, SPARK_CLASSPATH tidak digunakan lagi di Spark 1.5.x+ jadi Anda harus menggunakan sebagai gantinya 
[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

Saya memang mengalami bug menggunakan yang sebelumnya:[…]Disebabkan oleh:java.lang.IllegalStateException:data blok yang belum dibaca jadi saya menggunakan versi pertama (menggunakan SPARK_CLASSPATH)Sekarang saatnya Scala !
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
Jika Anda ingin menggunakan Admin HBase untuk melihat daftar tabel, snapshot, atau operasi terkait admin, Anda akan menggunakan
scala> val admin = new HBaseAdmin(hconf)

admin.listTables
Dan jika ingin membuat tabel :
val tableDesc = new HTableDescriptor(tableName)
admin.createTable(tableDesc)

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apa itu Hadoop Cluster? Praktik Terbaik untuk Membangun Cluster Hadoop

  2. Jalur Tulis Apache HBase

  3. Administrasi Basis Data Operasional

  4. Membangun Proses yang Dapat Diskalakan Menggunakan NiFi, Kafka, dan HBase di CDP

  5. Gudang Data Generasi Berikutnya di Santander UK