Một số bổ sung nhỏ cần thiết để tấn công bảng HBase từ ngữ cảnh Spark.
Đầu tiên, hãy nhanh chóng tạo một bảng mẫu HBase “t1 ″ với 40 dòng
[root @ sandbox ~] # cat hbase_load.txtcreate '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} .joinput 't1', "# {i} - # { j} - # {k} "," f1:# {j} # {k} "," # {rnd} "end \ end \ end [root @ sandbox ~] # cat hbase_load.txt | hbase shell
Bạn cần điều chỉnh đường dẫn Spark của mình (cần có ổi 14 để bao gồm cái đầu tiên tôi tìm thấy):
[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 / ổi-14.0.1.jar [root @ sandbox ~] # spark-shell --master fiber-client
Xin lưu ý thêm, SPARK_CLASSPATH không được dùng trong Spark 1.5.x + vì vậy bạn sẽ sử dụng
[root @ sandbox ~] # spark-shell --master fiber-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
Tôi đã gặp lỗi khi sử dụng phiên bản trước:[…] Do:java.lang. apache.hadoop.hbase. {HBaseConfiguration, HTableDescriptor} import org.apache.hadoop.hbase.client. {HBaseAdmin, Result} import org.apache.hadoop.hbase.io.ImmutableBytesWlikeimport org.apache.hadoop.hbase.mapreduce.TableInputFormop.hbase.mapreduce.TableInput tableName ="t1" val hconf =HBaseConfiguration.create () hconf.set (TableInputFormat.INPUT_TABLE, "t1") val hBaseRDD =sc.newAPIHadoopRDD (hconf, classOf [TableInputFormat], classOf [Immutable], classOfn print ("các bản ghi được tìm thấy:" + hBaseRDD.count ()) [...] 2016-04-07 18:44:40,553 INFO [main] lập lịch.DAGScheduler:Job 0 đã hoàn thành:đếm tại
scala> val admin =new HBaseAdmin (hconf) admin.listTables
Và nếu bạn muốn tạo một bảng: val tableDesc =new HTableDescriptor (tableName) admin.createTable (tableDesc)