完成第二部分spark速成spark2.1.0版本3.42读写hbase数据_第1页
完成第二部分spark速成spark2.1.0版本3.42读写hbase数据_第2页
完成第二部分spark速成spark2.1.0版本3.42读写hbase数据_第3页
完成第二部分spark速成spark2.1.0版本3.42读写hbase数据_第4页
完成第二部分spark速成spark2.1.0版本3.42读写hbase数据_第5页
免费预览已结束,剩余17页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、林子雨老师 2017 年 2 月 20 日1249【】博客内容由厦门大学数据库拥有,!返回 Spark首页Spark 处理的数据有很多是存放在HBase 数据库中的,所以,需要学会如何读写HBase 数据库。HBase 是针对谷歌 BigTable 的开源实现,是一个靠、高性能、面向列、可伸缩的分布式数据库,主要用来非结构化和半结构化的松散数据。HBase 可以支持超大规模数据,它可以通过水平扩展的方式,利用廉价计算机集群处理由超过 10 亿行数据和数百万列元素组成的数据表。如果要了解HBase 的技术原理和使用方法,可以参考厦门大学数据库的课程HBase 数据库。准备工作一:创建一个 HBa

2、se 表Spark2.1.0 入门:读写 HBase 数据这里依然是以student 表为例进行演示。这里假设你已经成功安装了HBase 数据库,如果你还没有安装,可以参考厦门大学数据库 HBase 安装和使用,进行安装,安装好以后,不要创建数据库和表,只要跟着本节后面的内容操作即可。HBase 安装时有三种模式:单机模式、伪分布式模式和分布式模式。本采用伪分布式安装。安装好了伪分布式模式的HBase 以后,可以在里面创建一个student 表。 Linux 系统,打开一个终端(可以使用快捷方式Ctrl+Alt+T 组合键打开终端),因为HBase 是伪分布式模式,需要调用HDFS,所以,请首

3、先在终端中输入下面命令启动Hadoop:1.cd /usr/local/hadoop2./sbin/start-all.sh1.jps2375 SecondaryNameNode2169 DataNode2667 NodeManager2972 Jps运行jps 命令以后,应该可以看到以下几个进程:启动完成以后,一定要输入jps 命令查看是否启动成功:如果少了其中一个进程,说明启动失败。下面就可以启动HBase,命令如下:1.cd /usr/local/hbase2./bin/start-hbase.sh /启动HBase3./bin/hbase s /启动hbase s这样就可以进入hbas

4、e s 命令提示符状态。下面在HBase 数据库中创建student 表(注意:在关系型数据库 中,需要首先创建数据库,然后再创建表,但是,在HBase 数据库中,不需要创建数据库,只要直接创建表就可以):1. hbase list 用list 命令可以显示当前HBase 数据库中有哪些已经创建好的表,如果里面已经有一个名称为student 的表,请使用如下命令删除(如果不存在student 表,就不用执行下面的删除命令了):1. hbase disable studenthttp:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javasc

5、ript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);2045 NameNode2541 ResourceManager2. hbase drop studenthttp:/avascript:void(0);/blog/1316-2/javascript:void(0);http:/blog/1316-2/j下面让一起来创建一个student 表,要在这个表中录入如下数据:可以在hbase s中使用下面命令创建:1. hbasecreate student,infohttp

6、:/avascript:void(0);/blog/1316-2/javascript:void(0);http:/blog/1316-2/j你可以发现,在创建student 表的 create 命令中,命令后面首先跟上表名称student,然后,再跟上列族名称info,这个列族info中包含三个列name,gender,age。你会发现,好像没有id字段,这是因为HBase 的表中会有一个系统默认的属性作为行键,无需自行创建,默认把 put 命令操作中跟+| id| name| gender | age|+|1 | Xueqian| F|23 |2 | Weiliang | M|24 |+在

7、表名后的第一个字段作为行健。创建完“student”表后,可通过describe 命令查看“student”表的基本信息:1. hbase describe student下面,要把student 表的两个样例输入到student 表中。但是,HBase是列族数据库,原理和关系数据库不同,操作方法也不同。如果要了解HBase的技术原理和使用方法,可以参考厦门大学数据库的课程HBase数据库。如果没有时间学习HBase 数据库细节知识,也可以直接按照下面的内容跟着操作就可以了。HBase 中用put 命令添加数据,注意:一次只能为一个表的一行数据的一个列(也就是一个单元格,单元格是HBase 中

8、的概念)添加一个数据,所以直接用s 命令数据效率很低,在实际应用中,一般都是利用编程操作数据。因为这里只要两条学生,所以,可以用 s命令手工。/首先录入student 表的第一个学生1.2.hbase put student,1,info:name,Xueqian3.hbase put student,1,info:gender,F4.hbase put student,1,info:age,23/然后录入student 表的第二个学生5.6.hbase put student,2,info:name,Weilianghttp:/blog/1316-2/javascript:void(0);h

9、ttp:/blog/1316-2/javascript:void(0);7. hbase put student,2,info:gender,M8. hbase put student,2,info:age,24数据录入结束后,可以用下面命令查看刚才已经录入的数据:1./如果每次只查看一行,就用下面命令2.hbase get student,1/如果每次查看全部数据,就用下面命令3.4.hbase scan student可以得到如下结果:ROWCOLUMN+CELL1column=info:age, timest=1479640712163, value=23http:/blog/1316-

10、2/javascript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);准备工作二:配置Spark1column=info:gender, timestamp=1479640704522, value=Fcolumn=info:name, timest=1479640696132, value=Xueqiancolumn=info:age, timest=1479640752474, value=242c

11、olumn=info:gender, timestamp=1479640745276, value=M2column=info:name, timest=1479640732763, value=Weiliang2 row(s) in 0.1610 seconds在开始编程操作HBase 数据库之前,需要对做一些准备工作。(1)请新建一个终端,执行下面命令,把HBase 的lib 目录下的一些jar 文件拷贝到 Spark 中,这些都是编程时需要引入的jar 包,需要拷贝的jar 文件包括:所有hbase 开头的 jar 文件、guava-12.0.1.jar、htrace-core-3.1.

12、0-incubating.jar 和protobuf-java-2.5.0.jar,可以打开一个终端按照以下命令来操作:1.cd /usr/local/spark/jars2.mkdir hbase3.cd hbase4.cp /usr/local/hbase/lib/hbase*.jar ./5.cp /usr/local/hbase/lib/guava-12.0.1.jar ./6.cp /usr/local/hbase/lib/htrace-core-3.1.0-incubating.jar ./7.cp /usr/local/hbase/lib/protobuf-java-2.5.0.

13、jar ./,后面编译和运行过程才不会出错。编写程序HBase 数据http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);如果要让 SparkHBase,就需要使用 SparkContext 提供的newAPIHadoopRDD API 将表的内容以RDD 的形式加载到 Spark 中。请在Linux 系统中打开一个终端,然后执行以下命令:1.cd /usr/local/spark/mycode2.mkdir hbase3.cd hbase4.mkdir -p src/main/scala5.cd s

14、rc/main/scala6.vim SparkOperateHBase.scala然后,在 SparkOperateHBase.scala 文件中输入以下代码:import.apache.hadoop.conf.Configuration import.apache.hadoop.hbase._t._import.apache.hadoop.hbase.mapreduce.TableInputFormat import.apache.hadoop.hbase.util.Bytesimport.apache.spark.SparkContexthttp:/blog/1316-2/javascr

15、ipt:void(0);http:/blog/1316-2/javascript:void(0);OSVUXZ GVGINK YVGXQ 9VGXQ)UTZKZ EOSVUXZ GVGINK YVGXQ 9VGXQ)UTLUHPKIZ 9VGXQ5VKXGZK.(GYK aJKLSGOT GXMY XXG_A9ZXOTMC aGR IUTL # .(GYK)UTLOMXGZOUT IXKGZK GR YI # TK 9VGXQ)UTZKZ TK 9VGXQ)UTL 设置查询的表名IUTL YKZ :GHRK/TVZ,UXSGZ /46;:E:(2+ YZJKTZ GR YZ8* # YI TK

16、6/.GJUUV8* IUTL IRGYY5LA:GHRK/TVZ,UXSGZC IRGYY5LA GVGINK NGJUUV NHGYK OU /SSZGH_ZKY=XOZGHRKC IRGYY5LA GVGINK NGJUUV NHGYK ITZ 8KYRZC GR IUTZ # YZ8* IUTZ VXRT 9ZJKTZY 8* )UTZ IUTZ YZ8* IGINK 遍历输出YZ8* LUXKGIN a IGYK E XKYRZ #$GR QK_ # (_ZKY ZU9ZXOTM XKYRZ MKZ8U GR TGSK # (_ZKY ZU9ZXOTM XKYRZ MKZGRK OT

17、LU MKZ(_ZKY TGSK MKZ(_ZKY GR MKTJKX # (_ZKY ZU9ZXOTM XKYRZ MKZGRK OTLU MKZ(_ZKY MKTJKX MKZ(_ZKY GR GMK # (_ZKY ZU9ZXOTM XKYRZ MKZGRK OTLU MKZ(_ZKY GMK MKZ(_ZKY VXRT 8U QK_ QK_ 4GSK TGSK -KTJKX MKTJKX MK GMK c c然后就可以用sbt 打包编译。不过,在编译之前,需要新建一个 simple.sbt 文件,在simple.sbt 配置文件中,需要知道scalaVer、spark-core、的安装

18、和使用的“编写 Scala 独立应用程序”部分,已经介绍了如何寻找scalaVer和spark-core 的版本号,这里不再赘述。现在介绍如何找到你自版本号。请在Linux 系统中打开一个终端,输入下面命令:1.cd /usr/local/hbase /这是笔者电脑的hbase 安装目录2.cd lib3.lsls 命令会把“/usr/local/hbase/lib”目录下的所有jar 文件全部列出来,其中,就可以看到下面三个文件:hbase-cnt-1.1.5.jar/可以看本号是 1.1.5 mon-1.1.5.jar /可以看本号是 1.1.5hbase-server-1.1.5.jar

19、 /可以看本号是 1.1.5http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);己电脑上安装的HBase 的hba、mon、hbase-server 的hbamon、hbase-server 的版本号。面章节Sparkhbase-server 的版本号是 1.1.5(当然,你的电脑上可能不是这个版本号,请以你自己的版本号为准)。有了这些版本号信息,就可以新建一个simple.sbt 文件:1. cd /usr/local/spark/mycode/hbase2. vim simple.sbt然后在s

20、imple.sbt 中录入下面内容:name := Simple Project ver:= 1.0scalaVer:= 2.11.8libraryDependencies += .apache.spark % spark-core % 2.1.0 libraryDependencies += .apache.hbase % hbase-cnt % 1.1. 5libraryDependencies += .apache.hbase % mon % 1.1.5http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:vo

21、id(0);根据上面三个文件,就可以得知hba、mon、保存该文件,退出vim 编辑器。然后,输入下面命令:1. find . 应该可以看到类似下面的文件结构:下面就可以运行sbt 打包命令:1. cd /usr/local/spark/mycode/hbase/一定把这个设置为当前目录./src./src/main./src/main/scala./src/main/scala/SparkOperateHBase.scala./simple.sbthttp:/blog/1316-2/javascript:void(0);http:/blog/1316-2/j avascript:void(0

22、);libraryDependencies += .apache.hbase % hbase-server % 1.1. 52. /usr/local/sbt/sbt package打包成功以后,生成的 jar 包的位置为/usr/local/spark/mycode/hbase/scala-2.11/simple-project_2.11-1.0.jar。最后,通过 spark-submit 运行程序。就可以将生成的 jar 包通过spark-submit 提交到 Spark 中运行了,命令如下:1. /usr/local/spark/bin/spark-submit -driver-cla

23、ss-path /usr/local/spark/jars/hbase/*:/usr/local/hbase/conf -class SparkOperateHBase/usr/local/spark/mycode/hbase/scala-2.11/simple-project_2.11-1.0.jar特别强调,上面命令中,必须使用“-driver-class-path参数指定依赖JAR 包的路径,而且必须把/usr/local/hbase/conf也加到路径中。执行后得到如下结果:Students RDD Count:2Row key:1 Name:Xueqian Gender:F Age:

24、23http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);下面编写程序向HBase 中写入两行数据。请打开一个Linux 终端,输入如下命令:1. cd /usr/local/spark/mycode/hbase2. vim src/main/scala/SparkWriteHBase.scala上面命令用vim 编辑器新建了一个文件 SparkWrite

25、HBase.scala,然后,在SparkWriteHBase.scala 文件中输入下面代码:import.apache.hadoop.hbase.HBaseConfigurationimport.apache.hadoop.hbase.mapreduce.TableOutputFormat import.apache.spark._import.apache.hadoop.mapreduce.Jobimport.apache.hadoop.hbase.io.ImmutabytesWritable t.Resulthttp:/blog/1316-2/javascript:void(0);http:/blog/1316-2/j avascript:void(0);编写程序向 HBase 写入数据Row key:2 Name:Weiliang Gender:M Age:24OSVUXZ GVGINK NGJUUV NHGYK ITZ 6ZOSVUXZ GVGINK NGJUUV NHGYK ZOR (_ZKYUHPKIZ 9VGXQ=XOZK.(GYK aJKL SGOT GXMY XXG_A9ZXOTMC ;TOZ # aGR YVGXQ)UTL # TK 9V

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论