sparkToHbase

spark将数据写入hbase以及从hbase读取数据 本文将介绍 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自带zoo 阅读详情

 

 Cid,关联 order_goods_type 获取订单商品名称,然后导入hbase

{"oid":"o123", "cid": 1, "money": 600.0, "longitude":116.397128,"latitude":39.916527}
oid":"o112", "cid": 3, "money": 200.0, "longitude":118.396128,"latitude":35.916527}
{"oid":"o124", "cid": 2, "money": 200.0, "longitude":117.397128,"latitude":38.916527}
{"oid":"o125", "cid": 3, "money": 100.0, "longitude":118.397128,"latitude":35.916527}
{"oid":"o127", "cid": 1, "money": 100.0, "longitude":116.395128,"latitude":39.916527}
{"oid":"o128", "cid": 2, "money": 200.0, "longitude":117.396128,"latitude":38.916527}
{"oid":"o129", "cid": 3, "money": 300.0, "longitude":115.398128,"latitude":35.916527}
{"oid":"o130", "cid": 2, "money": 100.0, "longitude":116.397128,"latitude":39.916527}
{"oid":"o131", "cid": 1, "money": 100.0, "longitude":117.394128,"latitude":38.916527}
{"oid":"o132", "cid": 3, "money": 200.0, "longitude":118.396128,"latitude":35.916527}

 

package com.ws.orderCount


case class Order(cid:String,oid:String,money:Double,var cname:String,longitude:Double,latitude:Double) {
  override def toString: String = {
    s"cid:$cid,oid:$oid,money:$money,cname:$cname,longitude:$longitude,latitude:$latitude"
  }
}
package com.ws.orderCount

import java.sql.{DriverManager, ResultSet}
import java.util

import com.google.gson.Gson
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.hbase.client.{Connection, ConnectionFactory, Put, Table}
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.{HBaseConfiguration, TableName}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
import org.slf4j.{Logger, LoggerFactory}

object OrderCountToHbase {
  private val logger: Logger = LoggerFactory.getLogger(OrderCountToHbase.getClass)

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("OrderCountToHbase").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val files = sc.textFile("data/order.log")
    val orders: RDD[Order] = files.mapPartitions(x => {
      val gson = new Gson()
      val res: Iterator[Order] = x.map(x => {
        try {
          gson.fromJson(x, classOf[Order])
        } catch {
          case e: Exception =>
            e.printStackTrace()
            logger.error("json err【" + x + "】")
            null
        }
      })
      res
    })
    val orders_f = orders.filter(_ != null)
    val ordersplus: RDD[Order] = orders_f.mapPartitions(x => {
      val conn = DriverManager.getConnection("jdbc:mysql://dream3:3306/bigdata?charactedEncoding=utf-8", "root", "root")
      val st = conn.prepareStatement("select goodsname from order_goods_type where id=?")
      x.map(y => {
        try {
          st.setInt(1, Integer.parseInt(y.cid))
          val set: ResultSet = st.executeQuery()
          while (set.next()) {
            y.cname = set.getString("goodsname")
          }
          if (!x.hasNext) {
            if(set!=null){
              set.close()
            }
            if (st != null) {
              st.close()
            }
            if (conn != null) {
              conn.close()
            }
          }
          y
        } catch {
          case e: Exception =>
            e.printStackTrace()
            null
        }
      })
    })
    println(ordersplus.collect().toBuffer)
    ordersplus.foreachPartition(it => {
      val conf: Configuration = HBaseConfiguration.create()
      conf.set("hbase.zookeeper.quorum", "dream1:2181,dream2:2181,dream3:2181")
      val conn: Connection = ConnectionFactory.createConnection(conf)
      val table: Table = conn.getTable(TableName.valueOf("orders".getBytes()))
      val puts: util.ArrayList[Put] = new util.ArrayList[Put](100)
      try {
        it.foreach(x => {
          val put = new Put(Bytes.toBytes(x.oid))
          put.addColumn("order_info".getBytes(), "cname".getBytes(), x.cname.getBytes())
          put.addColumn("order_info".getBytes(), "money".getBytes(), Bytes.toBytes(x.money))
          put.addColumn("address_info".getBytes(), "longitude".getBytes(), Bytes.toBytes(x.longitude))
          put.addColumn("address_info".getBytes(), "latitude".getBytes(), Bytes.toBytes(x.latitude))
          puts.add(put)
          if (puts.size() == 100) {
            table.put(puts)
            puts.clear()
          }
        })
        table.put(puts)
      } catch {
        case e: Exception =>
          e.printStackTrace()
          logger.error("sssssss")
      } finally {
        if(table!=null){
          table.close()
        }
        if(conn!=null){
          conn.close()
        }
      }
    })
  }
}

结果

hbase(main):009:0> scan 'orders'
ROW                                  COLUMN+CELL                                                                                               
 o123                                column=address_info:latitude, timestamp=1611688596723, value=@C\xF5P\xC1\xB9sT                            
 o123                                column=address_info:longitude, timestamp=1611688596723, value=@]\x19j\x8B\x8F\x14\xDB                     
 o123                                column=order_info:cname, timestamp=1611688596723, value=\xE5\xAE\xB6\xE5\x85\xB7                          
 o123                                column=order_info:money, timestamp=1611688596723, value=@\x82\xC0\x00\x00\x00\x00\x00                     
 o124                                column=address_info:latitude, timestamp=1611688596723, value=@CuP\xC1\xB9sT                               
 o124                                column=address_info:longitude, timestamp=1611688596723, value=@]Yj\x8B\x8F\x14\xDB                        
 o124                                column=order_info:cname, timestamp=1611688596723, value=\xE6\x89\x8B\xE6\x9C\xBA                          
 o124                                column=order_info:money, timestamp=1611688596723, value=@i\x00\x00\x00\x00\x00\x00                        
 o125                                column=address_info:latitude, timestamp=1611688596723, value=@A\xF5P\xC1\xB9sT                            
 o125                                column=address_info:longitude, timestamp=1611688596723, value=@]\x99j\x8B\x8F\x14\xDB                     
 o125                                column=order_info:cname, timestamp=1611688596723, value=\xE6\x9C\x8D\xE8\xA3\x85                          
 o125                                column=order_info:money, timestamp=1611688596723, value=@Y\x00\x00\x00\x00\x00\x00                        
 o127                                column=address_info:latitude, timestamp=1611688596723, value=@C\xF5P\xC1\xB9sT                            
 o127                                column=address_info:longitude, timestamp=1611688596723, value=@]\x19I\xC6\xF3n\xF8                        
 o127                                column=order_info:cname, timestamp=1611688596723, value=\xE5\xAE\xB6\xE5\x85\xB7                          
 o127                                column=order_info:money, timestamp=1611688596723, value=@Y\x00\x00\x00\x00\x00\x00                        
 o128                                column=address_info:latitude, timestamp=1611688596723, value=@CuP\xC1\xB9sT                               
 o128                                column=address_info:longitude, timestamp=1611688596723, value=@]YZ)AA\xEA                                 
 o128                                column=order_info:cname, timestamp=1611688596723, value=\xE6\x89\x8B\xE6\x9C\xBA                          
 o128                                column=order_info:money, timestamp=1611688596723, value=@i\x00\x00\x00\x00\x00\x00                        
 o129                                column=address_info:latitude, timestamp=1611688596721, value=@A\xF5P\xC1\xB9sT                            
 o129                                column=address_info:longitude, timestamp=1611688596721, value=@\x5C\xD9z\xED\xDC\xE7\xCD                  
 o129                                column=order_info:cname, timestamp=1611688596721, value=\xE6\x9C\x8D\xE8\xA3\x85                          
 o129                                column=order_info:money, timestamp=1611688596721, value=@r\xC0\x00\x00\x00\x00\x00                        
 o130                                column=address_info:latitude, timestamp=1611688596721, value=@C\xF5P\xC1\xB9sT                            
 o130                                column=address_info:longitude, timestamp=1611688596721, value=@]\x19j\x8B\x8F\x14\xDB                     
 o130                                column=order_info:cname, timestamp=1611688596721, value=\xE6\x89\x8B\xE6\x9C\xBA                          
 o130                                column=order_info:money, timestamp=1611688596721, value=@Y\x00\x00\x00\x00\x00\x00                        
 o131                                column=address_info:latitude, timestamp=1611688596721, value=@CuP\xC1\xB9sT                               
 o131                                column=address_info:longitude, timestamp=1611688596721, value=@]Y9d\xA5\x9C\x06                           
 o131                                column=order_info:cname, timestamp=1611688596721, value=\xE5\xAE\xB6\xE5\x85\xB7                          
 o131                                column=order_info:money, timestamp=1611688596721, value=@Y\x00\x00\x00\x00\x00\x00                        
 o132                                column=address_info:latitude, timestamp=1611688596721, value=@A\xF5P\xC1\xB9sT                            
 o132                                column=address_info:longitude, timestamp=1611688596721, value=@]\x99Z)AA\xEA                              
 o132                                column=order_info:cname, timestamp=1611688596721, value=\xE6\x9C\x8D\xE8\xA3\x85                          
 o132                                column=order_info:money, timestamp=1611688596721, value=@i\x00\x00\x00\x00\x00\x00

 

告别“盲开”:手把手教你用MCU内置比较器搞定BLDC无感方波启动(附代码片段) 本文详细介绍了如何利用MCU内置比较器实现BLDC无感方波启动,解决传统无传感器控制中的'盲开'问题。通过虚拟中性点电路设计和三段式启动流程,结合反电动势检测和过零检测技术,提供了一套经济高效的解决方案,并附有可直接移植的代码片段,助力工程师快速实现可靠的无感控制。 阅读详情

相关推荐

M1/M2 Mac用户看过来:不装VirtualBox,用PD虚拟机也能跑ENSP的保姆级教程

本文为M1/M2 Mac用户提供了一份不依赖VirtualBox,使用Parallels Desktop虚拟机运行ENSP的详细指南。通过ARM架构的Win10镜像选择、组件替代方案和网络配置优化,实现ENSP核心功能的高效运行,特别适合网络工程师在苹果芯片设备上进行网络模拟。

weixin_28683065的博客 413

使用spark写数据到Hbase的三种方式

方式一:直接使用HBase Table的PUT方法 import org.apache.hadoop.hbase.{HBaseConfiguration, TableName} import org.apache.hadoop.hbase.client.{ConnectionFactory, Put, Table} import org.apache.hadoop.hbase.util.B...

freeRoad 1万+

从零到英雄:Spring Boot 微服务架构全攻略

在数字化转型的时代,微服务架构已成为构建可扩展、高可用系统的首选方案。本文以“从零到英雄”为主题,详细指导读者使用Spring Boot快速构建微服务帝国。从基础环境搭建入手,逐步深入到服务发现、配置管理、负载均衡、断路器、API网关、安全认证、监控与部署等核心模块。通过大量代码示例和详细解释,包括中文注释,帮助初学者和中级开发者掌握Spring Boot的核心概念和技术实践。文章强调实际操作,涵盖RESTful API开发、数据库集成、容器化部署等内容,并讨论常见问题与优化策略。无论你是Java开发者还是

一个被知识诅咒的人 2701

Spark入Hbase的四种方式效率对比

一、方式介绍 本次测试一种采用了四种方式进行了对比,分别是:1.在RDD内部调用java API。2、调用saveAsNewAPIHadoopDataset()接口。3、saveAsHadoopDataset()。4、BulkLoad方法。 测试使用的大数据版本如下(均为单机版):Hadoop2.7.4、Hbase1.0.2、Spark2.1.0 二、测试 本次测试采用10W条单一列簇单一...

weixin_33748818的博客 691

雷达工程师避坑指南:STAP处理中,间歇采样转发干扰为什么这么难对付?

本文深入解析了STAP处理中间歇采样转发干扰(ISRJ)的挑战与应对策略。通过分析ISRJ的工作机制和自由度消耗问题,结合仿真数据对比,揭示了其与传统压制干扰的本质差异。文章还探讨了在工程实践中如何构建有效的防御体系,包括降维处理技术选择和混合架构设计,为雷达工程师提供了实用的避坑指南。

weixin_30530339的博客 272

blenderproc 制作位姿估计数据集

blenderproc 制作位姿估计数据集 准备工作 1.首先需要去下载blenderproc的源码blenderproc,按照作者的readme文件进行编译。 2.其次需要下载bop_toolkit源码,链接如下bop_toolkit 3.说明:blenderproc主要用来生成数据,包括depth,rgb,位姿标签文件(scene_gt.json),bop_toolkit主要用来生成mask和mask_visib,scene_gt_info.json,用于判断物体的可见区域比例,如果遮挡太多考虑去掉。做

qq_43814359的博客 5699

spark保存数据到hbase_用spark导入数据到hbase

packagescala;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;im...

weixin_39698255的博客 518

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

银行信息系统应用架构详解 885

spark 数据写入到 hbase

1)spark把数据写入到hbase需要用到:PairRddFunctions的saveAsHadoopDataset方法,这里用到了 implicit conversion,需要我们引入 import org.apache.spark.SparkContext._ 2)spark写入hbase,实质是借用了org.apache.hadoop.hbase.mapreduce.TableInpu...

potter 2813

ENS160传感器原理图设计,已量产(空气质量传感器)

ENS160 是一款集成式数字空气质量传感器,核心优势源于 “MEMS 传感元件 + 内置微处理器” 的架构。

不脱发的程序猿 573

堆一呼一吸之间:动态扩缩容引发JVM堆内存震荡的伸缩算法、代际传导与容器定容解析

Kubernetes扩容后,新Java实例的GC频率常比老实例高出数倍,堆容量反复伸缩。本文从一次支付系统的GC陡增出发,结合HotSpot源码与JDK 8实测,拆解堆伸缩的记账规则:期望容量以GC后已用量为基数、以Xms为下限,按空闲比例判断扩缩,收缩只在老年代回收后按0%、10%、40%、100%步进;再剖析年轻代随老年代联动、晋升风暴与元空间触发线,对比Parallel、G1、ZGC等收集器及JDK 26的变化,讨论容器分账、HPA共振与原地扩缩容,最后给出分级定容、预热与监控的方案。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 15万+

Spark+Hbase 亿级流量分析实战(小巧高性能的ETL)

在上一篇文章 大猪 已经介绍了日志存储设计方案 ,我们数据已经落地到数据中心上了,那接下来如何ETL呢?毕竟可是生产环境级别的,可不能乱来。其实只要解决几个问题即可,不必要引入很大级别的组件来做,当然了各有各的千秋,本文主要从 易懂、小巧 、简洁、 高性能 这三个方面去设计出发点,顺便还实现了一个精巧的 Filebeat。 设计 loghub功能 要实现的功能就是扫描每天的增量日志并写入Hba...

多一份贡献,多一份环保 1038

自动驾驶大模型---小米&华科的ORION端到端方案

本文介绍了小米汽车与华中科技大学联合开发的ORION自动驾驶端到端方案。该框架创新性地将视觉语言模型(VLM)与自动驾驶系统结合,包含QT-Former特征提取模块、大语言模型(LLM)推理模块和生成式规划器三大核心组件。通过视觉感知与语言理解的深度融合,ORION能更准确地理解人类指令并生成合理轨迹,同时提升系统的可解释性。实验证明,该方案在准确性、泛化能力和决策透明度方面均有显著优势。ORION框架为自动驾驶技术提供了新思路,有望推动行业向更安全、智能的方向发展。

智能汽车人的博客 2005

Spark 读取 Hbase 优化 --手动划分 region 提升并行数

一. Hbase 的 region 咱们先简单介绍下 Hbase 的 架构和 region :web 从物理集群的角度看,Hbase 集群中,由一个 Hmaster 管理多个 HRegionServer,其中每一个 HRegionServer 都对应一台物理机器,一台 HRegionServer 服务器上又能够有多个 Hregion(如下简称 region)。要读取一个数据的时候,首先要先找到存放这个数据的 region。而 Spark 在读取 Hbase 的时候,读取的 Rdd 会根据 Hbase 的

萌兔兔MMQ!! 1573

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

spark运算结果写入hbase及优化

在Spark中利用map-reduce或者spark sql分析了数据之后,我们需要将结果写入外部文件系统。 本文,以向Hbase中写数据,为例,说一下,Spark怎么向Hbase中写数据。 首先,需要说一下,下面的这个方法。 foreach (func) 最通用的输出操作,把func作用于从map-reduce生成的每一个RDD(spark sql生成的DataFrame可...

weixin_30294295的博客 320

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

spark操作hbase详细讲解

1.java API实现对hbase的操作 package testhbase; import java.util.ArrayList; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import...

流的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spark读取HBase数据分析,并将结果存入HBase分析结果表以及Redis(Java代码)

需要Spark分析的HBase表:客户入金表  customer_in_list            流水号:  serial_num            客户号:  customer_num            入金货币:currency_in            入金金额:amount_in            日期    :date_in            时间    :tim...

Godlike77的博客 3766

spark 读取hbase数据并转化为dataFrame

spark 的应用原来越广泛,而且hbase的最新代码也开始加入了hbase-spark模块,但是发行版本并未提供spark api。为了方面程序处理,故写了一个demo。 用于处理spark中获取hbase的数据,并将获取到的数据转化为dataframe

沈颖的家 1万+

spark保存数据到hbase_spark 数据写入到 hbase

1)spark把数据写入到hbase需要用到:PairRddFunctions的saveAsHadoopDataset方法,这里用到了implicit conversion,需要我们引入import org.apache.spark.SparkContext._2)spark写入hbase,实质是借用了org.apache.hadoop.hbase.mapreduce.TableInputFor...

weixin_39576018的博客 640

Spark导入导出Hbase

本文代码通过spark-shell运行 spark-shell --master yarn --driver-class-path /home/hadoop/software/spark/spark-2.4.4-bin-hadoop2.7/jars/hbase/*:/home/hadoop/software/hbase-1.4.10/conf 1.Put API Put API可能是将数据快速导...

得克特 785

Spark 读写Hbase

启动 zookeeper----》hadoop----》hbase 创建hbase表student create 'student' ,'info' 添加数据 put 'student' ,'1' ,'info:name','James' put 'student' ,'1' ,'info:age','23' put 'student' ,'1' ,'info:gender','F' put 'student' ,'2' ,'info:name','Smith' put 'studen

4290

Spark2.1.1<spark写入Hbase的三种方法性能对比>

测试条件以下是我的PC信息 依赖:<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.11</artifactId> <version>2.1.1</version> </dependency>

Gpwner的博客 1万+

spark向hbase中读写数据

最近项目中用频繁使用spark从hbase中读数据和向hbase中写数据,下面总结了一些简单demo, 在此基础上可以通过hbaseAPI进行各种复杂查询与写操作 希望能帮助到你 向Hbase中写数据方案一: package utils import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase...

孙大迪迪的博客 3141

JavaSpark bulkLoader批量写Hbase

配置相关代码: String htb_demo1 = “demo1”; //Hbase集群配置信息 Configuration hconf = HBaseConfiguration.create(); hconf.set("fs.defaultFS","hdfs://s1:9000"); hconf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem"); hconf.set("hbase.

weixin_41872669的博客 1423
上一篇: Spark任务划分概念
下一篇: Spark-Hdfs
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值