• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Spark 批量写数据入HBase,spark数据入hbase

Spark 批量写数据入HBase,spark数据入hbase

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含spark读取hbase数据,spark hbase,spark读取hbase,spark on hbase,spark操作hbase等服务器相关知识,网友希望可以进行参考

Spark 批量写数据入HBase,spark数据入hbase


介绍

??工作中常常会遇到这种情形,需要将hdfs中的大批量数据导入HBase。本文使用Spark+HBase的方式将RDD中的数据导入HBase中。没有使用官网提供的newAPIHadoopRDD接口的方式。使用本文的方式将数据导入HBase, 7000W条数据,花费时间大概20分钟左右,本文Spark可用核数量为20。

本文使用spark版本为1.3.0,hbase版本为0.98.1

hbase表结构为:表名table,列族Family,列为qualifier。

代码如下:

val readFile = sc.textFile("/path/to/file").map(x => x.split(","))
val tableName = "table"
readFile.foreachPartition{
  x=> {
    val myConf = HBaseConfiguration.create()
    myConf.set("hbase.zookeeper.quorum", "web102,web101,web100")
    myConf.set("hbase.zookeeper.property.clientPort", "2181")
    myConf.set("hbase.defaults.for.version.skip", "true")
    val myTable = new HTable(myConf, TableName.valueOf(tableName))
    myTable.setAutoFlush(false, false)//关键点1
    myTable.setWriteBufferSize(3*1024*1024)//关键点2
    x.foreach { y => {
      println(y(0) + ":::" + y(1))
      val p = new Put(Bytes.toBytes(y(0)))
      p.add("Family".getBytes, "qualifier".getBytes, Bytes.toBytes(y(1)))
      myTable.put(p)
    }
    }
    myTable.flushCommits()//关键点3
  }
}

此程序是使用了RDD的foreachPartition函数,在此程序中有三个比较关键的地方。
关键点1_:将自动提交关闭,如果不关闭,每写一条数据都会进行提交,是导入数据较慢的做主要因素。
关键点2:设置缓存大小,当缓存大于设置值时,hbase会自动提交。此处可自己尝试大小,一般对大数据量,设置为5M即可,本文设置为3M。
关键点3:每一个分片结束后都进行flushCommits(),如果不执行,当hbase最后缓存小于上面设定值时,不会进行提交,导致数据丢失。

注:此外如果想提高Spark写数据如Hbase速度,可以增加Spark可用核数量。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • HBase数据导入的几种操作,hbase数据导入几种
  • Spark 批量写数据入HBase,spark数据入hbase
  • hbase数据存取策略,hbase存取策略

相关文章

  • Elasticsearch之scroll,elasticsearch
  • storm与hadoop的对比,stormhadoop
  • Greenplum+Hadoop学习笔记-14-定义数据库对象之创建与管理数据库,hadoop-14-
  • Hadoop之——数据类型,hadoop数据类型
  • Spark中配置Parquet参数,sparkparquet参数
  • hive join详解,hivejoin
  • Kafka集群安装,kafka集群
  • 自定义输出文件名,输出文件名
  • MongoDB Query 的几个方法,mongodbquery
  • [Sqoop]将Mysql数据表导入到Hive,sqoophive

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 大数据处理算法一:Bitmap算法,数据处理bitmap算法
    • 机器学习数学基础- gradient descent算法(下),gradientdescent
    • JS查看Object对象的内容,jsobject对象
    • Hadoop实战 Hadoop Pipes运行C++程序问题解决,hadooppipes
    • 如何在coding.net上部署项目 (Flask),coding.netflask
    • AWS EC2 调整云主机根卷大小,awsec2
    • 启动Hive的时候有很多WARN和INFO信息,hivewarninfo信息
    • Hadoop学习---第三篇Hadoop的第一个Mapreduce程序,hadoopmapreduce
    • kafka集群搭建,kafka集群
    • MapReduce处理二次排序(分区-排序-分组),mapreduce二次

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有