首页
学习
活动
专区
圈层
工具
发布

Spark读写HBase之使用Spark自带的API以及使用Bulk Load将大量数据导入HBase

从HBase读数据 以下代码使用newAPIHadoopRDD()算子 package com.bonc.rdpe.spark.hbase import org.apache.hadoop.hbase...写数据的优化:Bulk Load 以上写数据的过程将数据一条条插入到Hbase中,这种方式运行慢且在导入的过程的占用Region资源导致效率低下,所以很不适合一次性导入大量数据,解决办法就是使用 Bulk...Bulk Load 的实现原理是通过一个 MapReduce Job 来实现的,通过 Job 直接生成一个 HBase 的内部 HFile 格式文件,用来形成一个特殊的 HBase 数据表,然后直接将数据文件加载到运行的集群中...与使用HBase API相比,使用Bulkload导入数据占用更少的CPU和网络资源。 接下来介绍在spark中如何使用 Bulk Load 方式批量导入数据到 HBase 中。...参考文章: Spark读取Hbase中的数据 使用Spark读取HBase中的数据 在Spark上通过BulkLoad快速将海量数据导入到Hbase Spark doBulkLoad数据进入hbase

3.4K20

spark整合hive+hbase做数据实时插入及实时查询分析

声明         使用的spark是2.0.1,hive是1.2.1,hbase是1.2.4,hadoop是2.6.0,zookeeper是3.4.9         各依赖安装这里不再赘述...:60000 spark 拷贝hbase安装目录下的如下jar,注意不要偷懒在spark-env.sh增加hbase的classpath,那样会导致spark...测试 1、在hbase建表,并增加三条数据 create 'hbase_test',{NAME=>'cf1'} put 'hbase_test','a','cf1:v1','1' put 'hbase_test.../spark-sql spark-sql> select * from hbase_test; 16/11/18 11:20:48 INFO execution.SparkSqlParser: Parsing...> 注意         由于本例全部依赖都安装在三台虚拟机上,并且每台只有2G内存,故只能用作软件流程测试,而不能用做性能测试,本文所列所有数据,不能做性能测试的依据。

1.2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    通过Spark生成HFile,并以BulkLoad方式将数据导入到HBase

    我们采用Spark读取Hive表数据存入HBase中,这里主要有两种方式: 通过HBase的put API进行数据的批量写入 通过生成HFile文件,然后通过BulkLoad方式将数据存入HBase...HBase的原生put方式,通过HBase集群的region server向HBase插入数据,但是当数据量非常大时,region会进行split、compact等处理,并且这些处理非常占用计算资源和IO...本篇文章主要介绍如何使用Spark生成HFile文件,然后通过BulkLoad方式将数据导入到HBase中,并附批量put数据到HBase以及直接存入数据到HBase中的实际应用示例。 1....将数据导入HBase的方式。...此外,如果我们在使用Spark(或者其他计算引擎)读取HBase表数据时,如果效率相对低,比如:Spark读取HBase时会根据region的数量生成对应数量的task,导致相同数据量下,会比直接读取Hive

    2.7K10

    HBase Bulkload 实践探讨

    Datax从 其他数据源迁移数据到 HBase 实际上是走的 HBase 原生 api 接口,在少量数据的情况下没有问题,但当我们需要从 Hive 里,或者其他异构存储里批量导入几亿,几十亿的数据,那么用...Extract,异构数据源数据导入到 HDFS 之上。 Transform,通过用户代码,可以是 MR 或者 Spark 任务将数据转化为 HFile。...我们将第 3 步生成分区表标记为表 A ,将第2步生成的分区数据通过 Hive SQL 插入到一张临时表 A' 里,这两张表都只有一个字段 rowkey,类型为 String。...通过 insert overwrite table 命令将 A' 表中的数据插入到 A 中,此时在表 A 的 location 目录下可以生成若干分区文件。...将生成的HFile文件distcp到线上集群并做Bulkload操作,如果提示找不到类的错误需要额外做一步 exportHADOOP_CLASSPATH=`hbase classpath` 这里需要强调下

    1.8K30

    Spark Streaming应用与实战全攻略

    2.5 入库 入库HBase: ? 插入数据到具体HBase数据库: ? 2.6 运行并查看结果 运行命令: ? 运行后可以去spark UI中去查看相关运行情况,UI中具体细节见下文。 ?...Streaming具体的stage信息 从图中, 我们可以看到Spark总共调度分发了两批次task set, 每个task set的处理(含序列化和压缩之类的工作)都不超过100毫秒,那么该Stage...,而处理数据查看后发现是一条一条的往HBase里面插入的,修改为批量插入,重新构建了json.性能猛增!!...插入数据到HBase: ? ? 4.5 运行 刚测试时给它相对很小的内存跑一跑: ? 五六万的插入没什么压力,但是到10万的时候,就有些卡顿了!! ? yarn 容器、cpu、内存大小 ?...查看插入数据量,能看到修改后插入数据10万是没有什么压力的 当我们再继续加大压力测试的时候,性能下降: ? 当我们再继续加大压力测试的时候,性能下降 查看统计信息: ? 查看统计信息

    86430

    Spark Streaming应用与实战全攻略

    2.5 入库 入库HBase: 插入数据到具体HBase数据库: 2.6 运行并查看结果 运行命令: 运行后可以去spark UI中去查看相关运行情况,UI中具体细节见下文。...set的处理(含序列化和压缩之类的工作)都不超过100毫秒,那么该Stage何来消耗4s呢?...,而处理数据查看后发现是一条一条的往HBase里面插入的,修改为批量插入,重新构建了json.性能猛增!!...修改前的代码: 修改后的代码: 插入数据到HBase: 4.5 运行 刚测试时给它相对很小的内存跑一跑: 五六万的插入没什么压力,但是到10万的时候,就有些卡顿了!!...10万是没有什么压力的: 查看插入数据量,能看到修改后插入数据10万是没有什么压力的 当我们再继续加大压力测试的时候,性能下降: 当我们再继续加大压力测试的时候,性能下降 查看统计信息: 查看统计信息

    1.3K60

    2021年大数据Spark(二十):Spark Core外部数据源引入

    ---- 外部数据源 Spark可以从外部存储系统读取数据,比如RDBMs表中或者HBase表中读写数据,这也是企业中常常使用,如:  1)、要分析的数据存储在HBase表中,需要从其中读取数据数据分析...日志数据:电商网站的商家操作日志 订单数据:保险行业订单数据  2)、使用Spark进行离线分析以后,往往将报表结果保存到MySQL表中 网站基本分析(pv、uv。。。。。)...调用RDD#foreachPartition函数将每个分区数据保存至MySQL表中,保存时考虑降低RDD分区数目和批量插入,提升程序性能。...时,插入数据,先将所有字段的值转为String,再使用Bytes转换为字节数组           Bytes.toBytes("info"), Bytes.toBytes("cout"), Bytes.toBytes...设置Spark Application使用Kryo序列化,性能要比Java 序列化要好,创建SparkConf对象设置相关属性,如下所示: 范例演示:从HBase表读取词频统计结果,代码如下 package

    75920

    如何使用Spark Streaming读取HBase的数据并写入到HDFS

    Spark Streaming能够按照batch size(如1秒)将输入数据分成一段段的离散数据流(Discretized Stream,即DStream),这些流具有与RDD一致的核心数据抽象,能够与...MyReceiver:自定义Receiver通过私有方法receive()方法读取HBase数据并调用store(b.toString())将数据写入DStream。...2.测试环境 ---- 1.HBase表 create 'picHbase', {NAME => 'picinfo'} (可向右拖动) [7mvyrrot4e.jpeg] 2.向表中插入测试数据 put...的Stream接口,需要一个自定义的Receiver用于查询HBase数据类 MyReceiver类需要继承Spark的Receiver类 /** * package: com.cloudera.streaming...这里需要注意一点我们在提交Spark作业时指定了多个executor,这样我们的Receiver会分布在多个executor执行,同样的逻辑会导致重复获取相同的HBase数据。

    4.7K40

    Spark Day05:Spark Core之Sougou日志分析、外部数据源和共享变量

    加载数据:从HBase表读取数据,封装为RDD,进行处理分析 保存数据:将RDD数据直接保存到HBase表中 Spark与HBase表的交互,底层采用就是MapReduce与HBase表的交互。...设置Spark Application使用Kryo序列化,性能要比Java 序列化要好,创建SparkConf对象设置相关属性,如下所示: 范例演示:从HBase表读取词频统计结果,代码如下...函数; 调用RDD#foreachPartition函数将每个分区数据保存至MySQL表中,保存时考虑降低RDD分区数目和批量插入,提升程序性能。...对结果数据降低分区数目 b. 针对每个分区数据进行操作 每个分区数据插入数据库时,创建一个连接Connection c....不能实现主键存在时更新数据,不存在时插入数据功能。 REPLACE INTO db_test.tb_wordcount (word, count) VALUES(?, ?)

    1.1K20

    Spark 踩坑记:数据库(Hbase+Mysql)

    最近一个实时消费者处理任务,在使用spark streaming进行实时的数据流处理时,我需要将计算好的数据更新到hbase和mysql中,所以本文对spark操作hbase和mysql的内容进行总结,...]”. saveAsObjectFiles(prefix, [suffix]):将当前的Dstream内容作为Java可序列化对象的序列化文件进行保存,每个interval batch的文件命名规则基于...中不添加任何RDD action,那么系统仅仅会接收数据然后将数据丢弃。...Spark访问Hbase 上面我们阐述了将spark streaming的Dstream输出到外部系统的基本设计模式,这里我们阐述如何将Dstream输出到Hbase集群。...它就是卡住,没反应) 问题分析:由于Hbase集群有多台机器,而我们只配置了一台Hbase机器的hosts,这样导致Spark集群在访问Hbase时不断的去寻找但却找不到就卡在那里 解决方式:对每个worker

    4.1K20

    spark的若干问题

    同时spark也可以处理存储在hdfs、Hbase、Cassandra、hive和所有存储在hadoop中的数据。...spark可以采取类似于hadoop的mapreduce的方式处理一般数据,也可以采取stream的方式处理流式数据。 问题2:SPARK支持的开发语言?   ...问题4:SPARK中已经缓存的数据不适合存储在内存时,spark如何处理?   spark将数据序列化到磁盘中或者spark重新计算内存中的数据。...默认情况下,spark采取重新计算的方式,即每次请求内存中的数据时,spark都是重新从磁盘中读取数据到内存,然后重新计算。...local[n]中的n代表的是CPU核数,这个n也可以理解成spark并行执行数。 问题6:执行spark时一定需要存在hadoop环境么?

    74360

    如何调优Spark Steraming

    云计算和大数据密不可分,这里有必要详细讨论下我的老本行——大数据领域。未来几年,我们将很荣幸地见证大数据技术的容器化。首先我们用几篇文章深入地了解一下大数据领域的相关技术。 1....,将Json数据解析出来 val resultJson = stream.map(record => record.value).window(Seconds(30), Seconds(30...它的功能是从Kafka拉取数据,经过一系列的转换,将结果存入HBase。我们可以看到流处理应用程序和批处理应用程序的一些区别。批处理应用程序拥有清晰的生命周期,它们一旦处理了输入文件就完成了执行。...2.3.1 序列化 RDD以序列化形式保存在内存中,可以减少内存使用并改善垃圾收集。默认情况下Spark使用Java序列化,这并不是很高效。...2.3.2 压缩 除了序列化RDD之外。还可以将 spark.rdd.compress设置为true来进行压缩。

    57950

    流式计算引擎-Storm、Spark Streaming

    比如:Storm和Spark Streaming 4、结果存储:将计算结果存储到外部系统,比如:大量可实时查询的系统,可存储Hbase中,小量但需要可高并发查询系统,可存储Redis。...Storm: 基本概念: 1、Tuple:由一组可序列化的元素构成。...2、Stream:无限个Tuple组成一个Stream 3、Topology:类似与MapReduce的job,由一系列Spout和Blot构成的DAG 4、Spout:Stream的数据源 5、Bolt...上定义了一系列操作,主要分两类:transformation和output,其中一个transformation操作能够将一个Dstream变换成另一个Dstream,而output操作可产生一个或一组结果...Spark几个组件的抽象及操作对比: 1、Spark Code 数据抽象RDD 数据操作transformation&action 2、Spark SQL 数据抽象:DataFrame、DataSet,

    2.8K20

    基于SparkStreaming+Kafka+HBase实时点击流案例

    背景 Kafka实时记录从数据采集工具Flume或业务系统实时接口收集数据,并作为消息缓冲组件为上游实时计算框架提供可靠数据支撑,Spark 1.3版本后支持两种整合Kafka机制(Receiver-based...Approach 和 Direct Approach),具体细节请参考文章最后官方文档链接,数据存储使用HBase 实现思路 实现Kafka消息生产者模拟器 Spark-Streaming采用Direct...Approach方式实时获取Kafka中数据 Spark-Streaming对数据进行业务计算后数据存储到HBase 本地虚拟机集群环境配置 由于笔者机器性能有限,hadoop/zookeeper/kafka...集群都搭建在一起主机名分别为hadoop1,hadoop2,hadoop3; hbase为单节点在hadoop1 缺点及不足 代码设计上有些许缺陷,比如spark-streaming计算后数据保存hbase...(partitionOfRecords => { partitionOfRecords.foreach( 这里面的代码中所包含的对象必须是序列化的 这里面的代码中所包含的对象必须是序列化的 这里面的代码中所包含的对象必须是序列化的

    1.2K20

    大数据查询——HBase读写设计与实践

    ②如果我们大量调用 PUT 接口插入数据,可能会导致大量的 GC 操作。除了影响性能之外,严重时甚至可能会对 HBase 节点的稳定性造成影响,采用 BulkLoad 无此顾虑。...java 的数据类型都很相像,除了它们是针对网络序列化而做的特殊优化)。...做这样转换是因为 HBase 的基本原理是基于 RowKey 排序的,并且当采用 bulk load 方式将数据写入多个预分区(region)时,要求 Spark 各 partition 的数据是有序的...踩坑记录1、kerberos 认证问题 如果集群开启了安全认证,那么在进行 Spark 提交作业以及访问 HBase 时,均需要进行 kerberos 认证。...示意如下 其中 tina.keytab.hbase 是将 tina.keytab 复制并重命名而得。因为 Spark 不允许同一个文件重复上传。

    1.4K90

    四万字硬刚Kudu | Kudu基础原理实践小总结

    HBase对一行数据进行更新时,HBase也是相当于插入一行新数据,在读数据时HBase按照timestamp的大小得到经过更新过的最新数据。...这样的设置下,Kudu不能像HBase一样将更新操作直接转换成插入一条新版本的数据,Kudu的选择是将写入的数据,更新操作分开存储。...1、Kudu写过程 Kudu与HBase不同,Kudu将写入操作分为两种,一种是插入一条新数据,一种是对一条已插入数据的更新。...Kudu与HBase在读写上过程中的差异 1、写过程 (1)HBase写的时候,不管是新插入一条数据还是更新数据,都当作插入一条新数据来进行;而Kudu将插入新数据与更新操作分别看待。...(2)Kudu表结构中必须设置一个唯一键,插入数据的时候必须判断一些该数据的主键是否唯一,所以插入的时候其实有一个读的过程;而HBase没有太多限制,待插入数据将直接写进memstore。

    3.6K42

    大数据生态圈常用组件(二):概括介绍、功能特性、适用场景

    OALP ClickHouse ClickHouse是一个用于快速OLAP分析的列式数据库管理系统 快速的明细数据查询 数据按列存储,查询时,将列向量化处并行处理,高效利用cpu,来使用当前服务器上可用的所有资源...数据频繁更新 Kudu将底层数据分为base数据文件和delta数据文件,有更新的数据写入delta文件,后期自动做数据的merge,所以支持数据的频繁更新操作 实时更新的应用 Kudu 通过高效的列式扫描提供了快速插入和更新的强大组合...avro-java-sdk java版 此avro-java-sdk主要为用户向kafka集群发送avro序列化数据/从kafka集群消费avro序列化数据提供了统一的接口。...流程漏洞较多,使用混乱; json hub 该中间件部署在大数据平台上,对外提供http接口服务,接收client端的消息(post请求),将数据进行avro序列化后转发到kafka。...avro数据自动落入hive/hbase/es 用户可以使用sdk将avro数据发送到kafka中,kafka-connect可以将数据自动落入hive/hbase/es中 自助式申请schema 当用户需要申请

    1.7K20
    领券