帮一个朋友写个样例,顺便练手啦~一直在做平台的各种事,但是代码后续还要精进啊。。。

 import java.util.Date

 import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.{Put, Scan, Result}
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapred.TableOutputFormat
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.mapred.JobConf
import org.apache.log4j.{Level, Logger}
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.{SparkContext, SparkConf} /**
* Created by ysy on 2/10/17.
*/
object test { case class ysyTest(LS_certifier_no: String,loc: String,LS_phone_no: String) def main (args: Array[String]) {
val sparkConf = new SparkConf().setMaster("local").setAppName("ysy").set("spark.executor.memory", "1g")
val sc = new SparkContext(sparkConf)
val sqlContext = new HiveContext(sc)
sqlContext.sql("drop table pkq")
val columns = "LS_certifier_no,LS_location,LS_phone_no"
val hbaseRDD = dataInit(sc,"EVENT_LOG_LBS",columns).map(data =>{
val id =Bytes.toString(data._2.getValue("f1".getBytes, "LS_certifier_no".getBytes))
val loc = Bytes.toString(data._2.getValue("f1".getBytes, "LS_location".getBytes))
val phone = Bytes.toString(data._2.getValue("f1".getBytes, "LS_phone_no".getBytes))
(id,loc,phone)
})
val showData = hbaseRDD.foreach(println)
val datas = hbaseRDD.filter(_._1 != null).filter(_._2 != null).filter(_._3 != null)
val hiveDF = initHiveTableFromHbase(sc:SparkContext,sqlContext,datas)
writeHiveTableToHbase(sc,hiveDF) } def initHiveTableFromHbase(sc:SparkContext,sqlContext: HiveContext,hiveRDD:RDD[(String,String,String)]) : DataFrame = {
val hRDD = hiveRDD.map(p => ysyTest(p._1,p._2,p._3))
val hiveRDDSchema = sqlContext.createDataFrame(hiveRDD)
hiveRDDSchema.registerTempTable("pkq")
hiveRDDSchema.show(10)
hiveRDDSchema
} def dataInit(sc : SparkContext,tableName : String,columns : String) : RDD[(ImmutableBytesWritable,Result)] = {
val configuration = HBaseConfiguration.create()
configuration.addResource("hbase-site.xml")
configuration.set(TableInputFormat.INPUT_TABLE,tableName )
val scan = new Scan
val column = columns.split(",")
for(columnName <- column){
scan.addColumn("f1".getBytes(),columnName.getBytes())
}
val hbaseRDD = sc.newAPIHadoopRDD(configuration,classOf[TableInputFormat],classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],classOf[org.apache.hadoop.hbase.client.Result])
System.out.println(hbaseRDD.count())
hbaseRDD
} def writeHiveTableToHbase(sc : SparkContext,hiveDF : DataFrame) = {
val configuration = HBaseConfiguration.create()
configuration.addResource("hbase-site.xml ")
configuration.set(TableOutputFormat.OUTPUT_TABLE,"EVENT_LOG_LBS")
val jobConf = new JobConf(configuration)
jobConf.setOutputFormat(classOf[TableOutputFormat]) val putData = hiveDF.map(data =>{
val LS_certifier_no = data(0)
val LS_location = data(1)
val LS_phone_no = data(2)
(LS_certifier_no,LS_location,LS_phone_no)
}) val rdd = putData.map(datas =>{
val put = new Put(Bytes.toBytes(Math.random()))
put.addColumn("f1".getBytes(),"LS_certifier_no".getBytes(),Bytes.toBytes(datas._1.toString))
put.addColumn("f1".getBytes(),"LS_location".getBytes(),Bytes.toBytes(datas._2.toString))
put.addColumn("f1".getBytes(),"LS_phone_no".getBytes(),Bytes.toBytes(datas._3.toString))
(new ImmutableBytesWritable, put)
})
val showRdd = rdd.foreach(println)
rdd.saveAsHadoopDataset(jobConf)
} }

spark集成hbase与hive数据转换与代码练习的更多相关文章

  1. 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法

    前言 在搭建大数据Hadoop相关的环境时候,遇到很多了很多错误.我是个喜欢做笔记的人,这些错误基本都记载,并且将解决办法也写上了.因此写成博客,希望能够帮助那些搭建大数据环境的人解决问题. 说明: ...

  2. Spark整合HBase,Hive

    背景: 场景需求1:使用spark直接读取HBASE表 场景需求2:使用spark直接读取HIVE表 场景需求3:使用spark读取HBASE在Hive的外表 摘要: 1.背景 2.提交脚本 内容 场 ...

  3. spark集成hive遭遇mysql check失败的问题

    问题: spark集成hive,启动spark-shell或者spark-sql的时候,报错: INFO MetaStoreDirectSql: MySQL check failed, assumin ...

  4. 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试

    前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...

  5. HBASE与hive对比使用以及HBASE常用shell操作。与sqoop的集成

    2.6.与 Hive 的集成2.6.1.HBase 与 Hive 的对比1) Hive(1) 数据仓库Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以方 ...

  6. 大数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化

    第6章 HBase API 操作6.1 环境准备6.2 HBase API6.2.1 判断表是否存在6.2.2 抽取获取 Configuration.Connection.Admin 对象的方法以及关 ...

  7. Hbase与hive集成与对比

    HBase与Hive的对比 1.Hive (1) 数据仓库 Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询. (2) 用于数据分析.清洗 ...

  8. hbase与Hive的集成

    1 HBase与Hive的对比 1.Hive (1) 数据仓库 Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询. (2) 用于数据分析. ...

  9. Hive集成HBase;安装pig

    Hive集成HBase 配置 将hive的lib/中的HBase.jar包用实际安装的Hbase的jar包替换掉 cd /opt/hive/lib/ ls hbase-0.94.2*  rm -rf ...

随机推荐

  1. Jasper之table报表

    这段时间用Jasper画报表,讲真的Jasper IDE真的很难用,网上找很久都没找到用table画的配置方法,以下是直接操作源码画table的方法,不用IDE一样可以做出来(不过样式还是得借助IDE ...

  2. spring使用c3p0报错

    java.sql.SQLException: Connections could not be acquired from the underlying database! at com.mchang ...

  3. HTML学习(二)

    表格和列表 <!-- /* @dl→definition list(定义列表),ul→unordered list(无序列表),ol→ordered list * @一个完整的表格.table. ...

  4. 红米 Note3 (kenzo)刷入 Lineage OS

    红米 Note3 (kenzo)刷入Lineage OS 的过程 详细的教程请看 Install LineageOS on kenzo 本文做一些额外的补充 0 刷机之的准备工作 如果登陆了 Goog ...

  5. 修改mysqlcharacter_set_database与character_set_server的默认编码(windows环境)

    @参考文章 修改前是这个样子的 mysql> show variables like "%char%";+--------------------------+------- ...

  6. 自己写的日志框架--linkinLog4j--框架可配置+提性能

    OK,上一篇博客我们已经实现了日志框架的基本的功能,但是还有一个最大的问题就是日志输出地不能重定向,然后一些输出也不可控.那现在我们来实现一个比较完整的日志框架. 设计思路如下: 1,定义一堆常量Li ...

  7. junit断言总结

    我们平时编写自己的测试类,如果没有断言,那么就没写测试的必要了. JUnit框架用一组assert方法封装了最常见的测试任务.这些assert方法可以极大地简化单元测试的编写. Assert类包含了一 ...

  8. WebSphere--安全性

    WebSphere应用服务器具有很好的安全性支持.安全性简单地说就是确定谁可访问重要的系统资源,这些系统资源包括文件.目录.程序.连接和数据库.以独立模式运行WebSphere应用服务器比作为 Web ...

  9. vmware虚拟机无法连接网络

    这是一个老生常谈的问题,而且网上有一套解决方法,最方便快捷的肯定属恢复虚拟网络了 说说我的情况 虚拟机VMware® Workstation 12 Pro centos6.8,克隆,192.168.2 ...

  10. python下用OpenCV的圆形检测

    写在文章前 这些天因为工作需要要学习图像检测,笨笨的我啥都不会要盯着OpenCV重头开始学(:′⌒`),甚至查资料能力都很弱弱〒▽〒 夸一下我最好的男票(*^▽^*)  男盆友也不是做图像处理的 但是 ...