麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

park將數據寫入hbase以及從hbase讀取數據

2019-11-11 05:09:13
字體:
來源:轉載
供稿:網友

本文將介紹

1、Spark如何利用saveAsHadoopDataset和saveAsNewAPIHadoopDataset將RDD寫入Hbase

2、spark從hbase中讀取數據并轉化為RDD

操作方式為在eclipse本地運行spark連接到遠程的hbase。

java版本:1.7.0

Scala版本:2.10.4

zookeeper版本:3.4.5(禁用了hbase自帶zookeeper,選擇自己部署的)

Hadoop版本:2.4.1

spark版本:1.6.1

hbase版本:1.2.3

集群:centos6.5_x64

將RDD寫入hbase

注意點:

依賴:

將lib目錄下的hadoop開頭jar包、hbase開頭jar包添加至classpath

此外還有lib目錄下的:zookeeper-3.4.6.jar、metrics-core-2.2.0.jar(缺少會提示hbase RpcRetryingCaller: Call exception不斷嘗試重連hbase,不報錯)、htrace-core-3.1.0-incubating.jar、guava-12.0.1.jar

$SPARK_HOME/lib目錄下的 spark-assembly-1.6.1-hadoop2.4.0.jar

不同的package中可能會有相同名稱的類,不要導錯

連接集群:

spark應用需要連接到zookeeper集群,然后借助zookeeper訪問hbase。一般可以通過兩種方式連接到zookeeper:

第一種是將hbase-site.xml文件加入classpath

第二種是在HBaseConfiguration實例中設置

如果不設置,默認連接的是localhost:2181會報錯:connection refused 

本文使用的是第二種方式。

hbase創建表:

雖然可以在spark應用中創建hbase表,但是不建議這樣做,最好在hbase shell中創建表,spark寫或讀數據

使用saveAsHadoopDataset寫入數據

package com.test    import org.apache.hadoop.hbase.HBaseConfiguration  import org.apache.hadoop.hbase.client.Put  import org.apache.hadoop.hbase.io.ImmutableBytesWritable  import org.apache.hadoop.hbase.ma從hbase讀取數據轉化成RDD

本例基于官方提供的例子

package com.test    import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor, TableName}  import org.apache.hadoop.hbase.client.HBaseAdmin  import org.apache.hadoop.hbase.mapreduce.TableInputFormat  import org.apache.spark._  import org.apache.hadoop.hbase.client.HTable  import org.apache.hadoop.hbase.client.Put  import org.apache.hadoop.hbase.util.Bytes  import org.apache.hadoop.hbase.io.ImmutableBytesWritable  import org.apache.hadoop.hbase.mapreduce.TableOutputFormat  import org.apache.hadoop.mapred.JobConf  import org.apache.hadoop.io._    object TestHBase2 {      def main(args: Array[String]): Unit = {      val sparkConf = new SparkConf().setAppName("HBaseTest").setMaster("local")      val sc = new SparkContext(sparkConf)            val tablename = "account"      val conf = HBaseConfiguration.create()      //設置zooKeeper集群地址,也可以通過將hbase-site.xml導入classpath,但是建議在程序里這樣設置      conf.set("hbase.zookeeper.quorum","slave1,slave2,slave3")      //設置zookeeper連接端口,默認2181      conf.set("hbase.zookeeper.property.clientPort", "2181")      conf.set(TableInputFormat.INPUT_TABLE, tablename)        // 如果表不存在則創建表      val admin = new HBaseAdmin(conf)      if (!admin.isTableAvailable(tablename)) {        val tableDesc = new HTableDescriptor(TableName.valueOf(tablename))        admin.createTable(tableDesc)      }        //讀取數據并轉化成rdd      val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],        classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],        classOf[org.apache.hadoop.hbase.client.Result])        val count = hBaseRDD.count()      println(count)      hBaseRDD.foreach{case (_,result) =>{        //獲取行鍵        val key = Bytes.toString(result.getRow)        //通過列族和列名獲取列        val name = Bytes.toString(result.getValue("cf".getBytes,"name".getBytes))        val age = Bytes.toInt(result.getValue("cf".getBytes,"age".getBytes))        println("Row key:"+key+" Name:"+name+" Age:"+age)      }}        sc.stop()      admin.close()    }  } 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北京一级毛片 | 国产99视频精品免视看9 | 久草在线观看福利视频 | 欧美日本免费一区二区三区 | 成人三级免费电影 | 色屁屁xxxxⅹ免费视频 | 日本视频网 | 91 免费看片 | 热99在线视频 | 看91| 国产一区二区三区四区五区加勒比 | 久久精品亚洲欧美日韩精品中文字幕 | 午色影院 | 久久综合狠狠综合久久 | 久久亚洲线观看视频 | 一区二区精品视频 | 久久精品国产亚洲7777 | 亚洲乱操 | 中文在线观看www | 成年免费在线视频 | 激情综合在线观看 | 色婷婷tv | 色婷婷av一区二区三区久久 | 亚洲第一激情 | 午夜精品影院 | 999久久久久久| 91美女视频在线观看 | 久久艹艹艹 | 国产成人在线播放视频 | 日本一级黄色大片 | 欧美黄色大片免费观看 | 成片免费观看视频大全 | 中文字幕精品在线视频 | 久草免费资源视频 | 午夜精品久久久久久毛片 | 日韩av片在线免费观看 | 在线播放免费人成毛片乱码 | 国产日韩在线观看一区 | 久久精品视频69 | 7777网站| 在线看一级片 |