स्पार्क संदर्भ से HBase तालिकाओं पर हमला करने के लिए कुछ मामूली समायोजन की आवश्यकता होती है।
आइए सबसे पहले एक "t1″ HBase नमूना तालिका बनाएं जिसमें 40 लाइनें हों
[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
आपको अपने स्पार्क क्लासपाथ को समायोजित करने की आवश्यकता है (अमरूद 14 की आवश्यकता है इसलिए पहले मुझे मिला है):
[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
एक साइड नोट के रूप में, स्पार्क 1.5.x+ में SPARK_CLASSPATH को हटा दिया गया है, इसलिए आप इसके बजाय
[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
मैं पिछले का उपयोग करके बग में भाग गया:[...] इसके कारण:java.lang.IllegalStateException:अपठित ब्लॉक डेटा इसलिए मैंने पहले संस्करण का उपयोग किया (SPARK_CLASSPATH का उपयोग करके) अब यह स्काला का समय है!
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
यदि आप तालिका सूची, स्नैपशॉटिंग, या किसी भी व्यवस्थापक-संबंधित संचालन को देखने के लिए HBase व्यवस्थापक का उपयोग करना चाहते हैं, तो आप scala> val admin = new HBaseAdmin(hconf)
admin.listTables
और अगर आप एक टेबल बनाना चाहते हैं :val tableDesc = new HTableDescriptor(tableName)
admin.createTable(tableDesc)