spark讀取hbase的資料
package hgs.spark.hbase //https://blog.csdn.net/mlljava1111/article/details/52675901 import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.mapreduce.TableInputFormat import org.apache.hadoop.hbase.client.Scan import org.apache.hadoop.hbase.filter.FilterList import org.apache.hadoop.hbase.filter.FilterList.Operator import org.apache.hadoop.hbase.filter.RowFilter import org.apache.hadoop.hbase.filter.RegexStringComparator import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp import org.apache.hadoop.hbase.protobuf.ProtobufUtil import org.apache.hadoop.hbase.util.Base64 import org.apache.hadoop.hbase.util.Bytes import org.apache.hadoop.hbase.filter.LongComparator object HbaseToSpark { def main(args: Array[String]): Unit = { //System.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); val conf = new SparkConf conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer") conf.setMaster("local").setAppName("hbasedata") val context = new SparkContext(conf) //hbase配置 val hconf = new HBaseConfiguration hconf.set("hbase.zookeeper.quorum", "bigdata00:2181,bigdata01:2181,bigdata02:2181") hconf.set("hbase.zookeeper.property.clientPort", "2181") hconf.set(TableInputFormat.INPUT_TABLE, "test") val scan = new Scan //掃描的表rowkey的開始和結束 scan.setStartRow("1991".getBytes) scan.setStopRow("3000".getBytes) //val list = new FilterList(Operator.MUST_PASS_ALL) //val filter1 = new RowFilter(CompareOp.GREATER_OR_EQUAL,new LongComparator(1991)) //val filter2 = new RowFilter(CompareOp.LESS_OR_EQUAL,new RegexStringComparator("3000*")) // list.addFilter(filter1) // list.addFilter(filter2) //scan.setFilter(list) //新增scan hconf.set(TableInputFormat.SCAN, convertScanToString(scan)) val hrdd = context.newAPIHadoopRDD(hconf, classOf[TableInputFormat], classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable], classOf[org.apache.hadoop.hbase.client.Result]) val resultrdd = hrdd.repartition(2) //列印結果 resultrdd.foreach{case(_,value)=>{ val key = Bytes.toString(value.getRow) val name = Bytes.toString(value.getValue("cf1".getBytes, "name".getBytes)) val age = Bytes.toString(value.getValue("cf1".getBytes, "age".getBytes)) println("rowkey:"+key+" "+"name:"+name+" "+"age:"+age) } } context.stop() } def convertScanToString(scan: Scan) = { val proto = ProtobufUtil.toScan(scan) Base64.encodeBytes(proto.toByteArray) } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31506529/viewspace-2640482/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MapReduce和Spark讀取HBase快照表Spark
- Spark讀取MySQL資料SparkMySql
- Spark拉取Kafka的流資料,轉插入HBase中SparkKafka
- Spark讀取elasticsearch資料指南SparkElasticsearch
- Spark讀取MongoDB資料的方法與優化SparkMongoDB優化
- Spark Streaming讀取Kafka資料兩種方式SparkKafka
- HBase資料的讀寫流程
- Spark(16) -- 資料讀取與儲存的主要方式Spark
- spark讀取hdfs資料本地性異常Spark
- Spark 讀取 Hbase 優化 --手動劃分 region 提高並行數Spark優化並行
- spark學習筆記--資料讀取與儲存Spark筆記
- spark與hbaseSpark
- Spark讀取Hbase報錯NoSuchMethodError: org.apache.hadoop.conf.Configuration.getPassword(Ljava/lang/String;SparkErrorApacheHadoopJava
- spark大批量讀取Hbase時出現java.lang.OutOfMemoryError: unable to create new native threadSparkJavaErrorthread
- HBase實操:HBase-Spark-Read-Demo 分享Spark
- 讀取JSON資料JSON
- 讀取CSV資料
- Spark讀Hbase優化 --手動劃分region提高並行數Spark優化並行
- python讀取MySQL資料PythonMySql
- Jsp讀取MySQL資料JSMySql
- sqlserver讀取oracle資料庫資料SQLServerOracle資料庫
- 利用反射讀取資料庫資料反射資料庫
- 大資料實踐解析(下):Spark的讀寫流程分析大資料Spark
- Python中Spark讀取parquet檔案並獲取schema的JSON表示PythonSparkJSON
- 使用 jQuery 讀取 Vue 元件的資料jQueryVue元件
- spark直接讀取本地檔案系統的檔案Spark
- eazyexcel 讀取excel資料插入資料庫Excel資料庫
- python讀取串列埠 資料Python串列埠
- 建造者模式讀取資料模式
- 讀取資料夾檔案
- Python讀取YAML配置資料PythonYAML
- POI 分批讀取Excel資料Excel
- 讀取JSON資料存入表格JSON
- Spark 如何寫入HBase/Redis/MySQL/KafkaSparkRedisMySqlKafka
- hbase與phoenix整合(使用phoenix操作hbase資料)
- Java讀取暫存器資料的方法Java
- netty讀取大塊的有分界資料Netty
- SpringBoot讀取配置資料的幾種方式Spring Boot