CN109766388B - 一种将数据存入HBase的方法和系统 - Google Patents
一种将数据存入HBase的方法和系统 Download PDFInfo
- Publication number
- CN109766388B CN109766388B CN201811619852.3A CN201811619852A CN109766388B CN 109766388 B CN109766388 B CN 109766388B CN 201811619852 A CN201811619852 A CN 201811619852A CN 109766388 B CN109766388 B CN 109766388B
- Authority
- CN
- China
- Prior art keywords
- module
- hbase
- terminal
- stored data
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及大数据技术领域,特别涉及一种将数据存入HBase的方法和系统。其中,所述方法包括:第一终端向第二终端或服务器端发送文件预览请求,通过读取部分预存数据文件在浏览器中生成数据预览;第一终端通过浏览器接收用户设置的预存数据文件的格式参数,响应于用户的参数提交请求将所述格式参数封装成预设格式参数,向服务器端发送所述预设格式参数;服务器端的Spark模块根据所述预设格式参数将HDFS模块中的预存数据文件存入HBase模块。本发明能够使用户通过零编码的方式将多种数据文件录入到HBase中,有效提高数据存入效率,降低操作失误的可能性;并且能够将GB级别及以上大小的数据文件快速导入HBase中,有效提高运行和工作速度。
Description
技术领域
本发明涉及大数据技术领域,特别涉及一种将数据存入HBase的方法和系统。
背景技术
随着移动互联网,物联网,云计算以及智慧城市的普及,人们已经进入到了大数据时代,Apache Hadoop已成为大数据行业发展背后的驱动力。Hadoop提供了文件系统接口和多个分布式文件系统的实现,其中较重要的为Hadoop分布式文件系统(HDFS,HadoopDistributed Filesystem)和HBase模块(330)。HDFS适用于部署在低廉的硬件上,具有高吞吐量,能够通过计算存储海量数据。此外,HBase基于Hadoop构建,是一个分布式、面向列的并可伸缩的海量数据存储型数据库。同样的,它也能够部署在大量廉价的机器上,提供海量数据高速存储和读取的分布式数据库解决方案。其常被用来存放一些结构简单,但数据量非常大的数据文件(通常在TB级别以上),如历史订单记录、日志数据等。
现有技术中将数据从HDFS录入到HBase的方式主要有两种:1.通过HBase API逐条或批量录入数据;2.基于Hadoop MapReduce录入实现。其中,第一种方式是数据存储到HBase最常用的方式,但其只适用于小量数据,很难胜任大量数据(如10GB大小的数据)的录入,不仅速度很慢,而且还非常消耗HBase的集群资源。第二种方式是一种针对大文件录入比较常用的手段,但由于MapReduce基于磁盘计算,因此数据文件录入和读取的速度受磁盘的物理特性限制;并且,需要针对不同类型的数据进行特定的编程开发,致使时间和人力成本较高。
发明内容
针对现有技术的上述问题,本发明的目的在于提供一种海量数据文件能够快速导入HBase的方法和系统,使用户通过零编码的方式实现不同类型数据文件的录入。
本发明一方面提供一种将数据存入HBase的方法,包括:第一终端向第二终端或服务器端发送文件预览请求,通过读取部分预存数据文件在浏览器中生成数据预览;第一终端通过浏览器接收用户设置的预存数据文件的格式参数,响应于用户的参数提交请求将所述格式参数封装成预设格式参数,向服务器端发送所述预设格式参数;服务器端的Spark模块根据所述预设格式参数将HDFS模块中的预存数据文件存入HBase模块。
具体地,所述第一终端通过浏览器接收用户设置的预存数据文件的格式参数,响应于用户的参数提交请求将所述格式参数封装成预设格式参数,向服务器端发送所述预设格式参数;具体包括:通过浏览器的参数提交界面接收用户设置的预存数据文件的格式参数;响应于用户的参数提交请求判定所述格式参数是否有误:若有误,则驳回参数提交请求,并显示参数错误提醒;若无误,则将所述格式参数封装后生成预设格式参数,向服务器端发送所述预设格式参数;所述预设格式参数至少包括文件格式、列名、列值、命名空间、表名、HBase分区数和rowKey的生成规则。
具体地,所述若无误,则将所述格式参数封装后生成预设格式参数,向服务器端发送所述预设格式参数;包括:所述第一终端判定所述预存数据文件的位置:若所述预存数据文件存储在服务器端的HDFS模块中,则直接向服务器端发送所述预设格式参数;若所述预存数据文件存储在第二终端,则通过文件传送协议将预存数据文件发送至服务器端的HDFS模块中,再向服务器端发送所述预设格式参数。
具体地,所述第一终端向第二终端或服务器端发送文件预览请求,通过读取部分预存数据文件在浏览器中生成数据预览;包括:若所述预存数据文件存储在第二终端,则所述第一终端向第二终端发送文件预览请求,根据第二终端的IP地址、预存数据文件的存储路径和文件传输协议读取部分预存数据文件,并在浏览器中生成数据预览;若所述预存数据文件存储在服务器端的HDFS模块中,则向服务器端发送文件预览请求,通过预存数据文件在HDFS模块中的存储路径读取部分预存数据文件,并在浏览器中生成数据预览。
具体地,所述服务器端的Spark模块根据所述预设格式参数将HDFS模块中的预存数据文件存入HBase模块;包括,所述服务器端的Spark模块接收第一终端发送的预设格式参数;所述Spark模块读取并解析所述预设格式参数,生成数据存入线程,所述数据存入线程基于Spark算法运行;所述Spark模块通过执行所述数据存入线程,将所述HDFS模块中的预存数据文件存入HBase模块中。
具体地,所述Spark模块读取并解析所述预设格式参数,具体包括,所述Spark模块:根据文件格式生成文件解析方式;根据rowKey的生成规则构造生成rowKey;基于Spark算法将构造生成的rowKey从小到大排序;根据列名和列值生成HashMap,其中列名对应key,列值所在数据数组中的索引为value;根据命名空间和表名,判定是否存在与所述表名对应的HBase表并生成判定结果;根据所述判定结果和HBase分区数生成分区方式。
具体地,所述Spark模块通过执行所述数据存入线程,将所述HDFS模块中的预存数据文件存入HBase模块中;包括,读取HDFS模块中的预存数据文件;根据所述数据存入线程,将读取的预存数据文件转换成hfile文件;将hfile文件写入HBase模块中。
具体地,所述Spark模块根据命名空间和表名,判定是否存在与所述表名对应的HBase表并生成判定结果;根据判定结果和HBase分区数生成分区方式;具体包括,所述Spark模块(310)根据命名空间与表名读取Hbase表,如果存在与所述表名对应的HBase表,则读取其分区值,根据HBase分区值和HBase分区数生成分区方式;如果不存在,则新建Hbase表,根据HBase分区数,生成分区方式。。
进一步地,所述将数据存入HBase的方法还包括,服务器端向所述第一终端发送执行成功回执,所述第一终端响应于所述执行成功回执生成存入成功提醒;或服务器端向所述第一终端发送执行失败回执,所述第一终端响应于所述执行失败回执生成存入失败提醒。
本发明另一方面提供一种将数据存入HBase的系统,所述系统执行上述方法,包括:第一终端,用于向第二终端或服务器端发送文件预览请求,通过读取部分预存数据文件在浏览器中生成数据预览界面;以及用于通过浏览器接收用户设置的预存数据文件的格式参数,根据所述格式参数生成预设格式参数,并响应于用户的参数提交请求向服务器端发送预设格式参数;服务器端,包括Spark模块、HDFS模块和HBase模块,所述Spark模块用于根据所述预设格式参数将所述HDFS模块中的预存数据文件存入所述HBase模块中。
由于上述技术方案,本发明具有以下有益效果:
本发明的第一终端通过界面可视化的方式,隐藏技术细节,不仅可以让用户形象地看到rowkey的格式和预存数据文件的格式,并且使用户无需编码即可将预存数据文件录入到HBase中,有效提高数据存入效率,降低操作失误的可能性。
本发明的通过Spark技术解决快速计算GB级别及以上大小的数据文件的问题,基于Spark分布式计算的能力,对数据进行处理、排序和分区,快速生成hfile文件;并且采用数据存入线程的方式,能够实现多个线程并行执行,实现多份预存数据文件同时录入HBase的场景,有效提高运行和工作速度。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明具体实施方式提供的将数据存入HBase的系统的结构示意图;
图2是本发明具体实施方式提供的第一终端的结构示意图;
图3是本发明具体实施方式提供的Spark模块的结构示意图;
图4是本发明一个具体实施例提供的将数据存入HBase的方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1,一种将数据存入HBase的系统,至少包括第一终端100和服务器端300。所述第一终端100还可以与所述第二终端200连接。所述第一终端100用于向第二终端200或服务器端300发送文件预览请求,通过读取部分预存数据文件在浏览器140中生成数据预览界面;以及用于通过浏览器140接收用户设置的预存数据文件的格式参数,根据所述格式参数生成预设格式参数,并响应于用户的参数提交请求向服务器端300发送预设格式参数;所述服务器端300包括Spark模块310、HDFS模块320和HBase模块330,所述Spark模块310用于根据所述预设格式参数将所述HDFS模块320中的预存数据文件存入所述HBase模块330中。
具体地,所述第一终端100可以包括个人计算机、平板电脑和笔记本电脑等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序等,如浏览器140。
具体地,所述第二终端200可以包括个人计算机、平板电脑和笔记本电脑等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序等。
优选地,所述第一终端100和第二终端200在同一个局域网络下,所述第二终端200开启sftp服务和文件读取权限,所述第一终端100可以通过sftp方式读取第二终端200上的数据。
具体地,所述服务器端300可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。服务器可以包括有网络通信单元、处理器和存储器等等。具体的,所述控制服务器可以为上述第一终端100和/或第二终端200提供后台服务。
参考图2,本说明书的实施例中,所述第一终端100包括数据预览模块110、参数提交模块120、数据采集模块130、Spark执行模块150和浏览器140。
其中,所述数据预览模块110用于向第二终端200或服务器端300发送文件预览请求,以及通过读取部分预存数据文件在浏览器140中生成数据预览;该数据预览显示在浏览器140的数据预览界面中。用户根据该数据预览获得预存数据文件的基本信息,如文件类型和文件内容等,以便设置预存数据文件的格式参数。在实际应用中,所述部分预存数据文件例如为所述预存数据文件的前100行。
其中,所述参数提交模块120被配置为:通过浏览器140接收用户设置的预存数据文件的格式参数,响应于用户的参数提交请求将所述格式参数封装成预设格式参数,以及向服务器端300发送所述预设格式参数。
在实际应用中,浏览器140设置有参数提交界面,该界面中显示用于各项格式参数填写的列表,用户在列表中填写预存数据文件的各项格式参数,即所述参数提交模块120通过浏览器140的参数提交界面接收格式参数。用户通过在参数提交界面上选择确定提交的选项发送参数提交请求,所述参数提交模块120响应于所述参数提交请求调用所述Spark执行模块150,Spark执行模块150根据该格式参数生成预设格式参数,最终将预设格式参数发送至服务器端300。
其中,所述参数提交模块120还被配置为:响应于用户的参数提交请求,判定所述预设格式参数是否有误:若有误,则驳回参数提交请求,并显示参数错误提醒;若无误,则调用所述Spark执行模块150封装所述格式参数生成预设格式参数,向服务器端300发送预设格式参数。
在实际应用中,所述Spark执行模块150可以通过socket的方式向服务器端300发送预设格式参数。
本说明书的实施例中,所述预设格式参数至少包括文件格式、列名、列值、命名空间、表名、HBase分区数和rowKey的生成规则。
本说明书的实施例中,所述rowKey的生成规则包括rowKey数据来源,所述rowKey数据来源包括预存数据文件的某一列、带有日期的文件名、输入常量和/或随机数。
本说明书的实施例中,所述预设格式参数还可以包括列族信息、数据的编码格式、数据类型、文件名、文本数据为分隔符、hfile临时存储文件路径和是否删除hdfs上的源数据信息等。
在一个具体实施例中,所述预存数据文件的最初存储位置位于第二终端200,上述第一终端100的数据预览模块110根据第二终端200的IP地址、预存数据文件的存储路径和文件传输协议读取部分预存数据文件。即通过上述IP地址和存储路径,第一终端100与第二终端200建立通信连接,并通过sftp的方式读取预存数据文件。在实际应用中,用户需要在第一终端100输入第二终端200设备的IP地址、预存数据文件路径,或者还需要输入第二终端200设备的用户名和密码等信息。
由于所述预存数据文件存储在所述第二终端200上,因此,所述第一终端100还包括数据采集模块130,用于将所述预存数据文件导入到服务器端300的HDFS模块320中。具体为,所述参数提交模块120被配置为:判定所述预设格式参数无误后,获取预存数据文件的位置,若确定预存数据文件位于第二终端200,则调用所述数据采集模块130,所述数据采集模块130通过文件传送协议将预存数据文件发送至服务器端300的HDFS模块320中。例如为,所述数据采集模块130通过sftp方式将第二终端200中的预存数据文件下载到第一终端100的数据存储模块中,再通过sftp方式将预存数据文件从第一终端100的数据存储模块导入到服务器端300的HDFS模块320中。
在另一个具体实施例中,所述预存数据文件的最初存储位置位于服务器端300,具体位于服务器端300的HDFS模块320中,第一终端100的数据预览模块110根据预存数据文件在HDFS上的路径读取部分预存数据文件。所述第一终端100启动时,已经配置好HDFS的url地址。
由于所述预存数据文件存储在所述HDFS模块320中,因此,所述第一终端100的参数提交模块120直接向服务器端300发送所述预设格式参数,无需调用数据采集模块130。
综上,通过第一终端100的浏览器140设置,可以让用户可视化地对预存数据文件进行预览。可以选择要录入哪些列、列族信息、列名信息、列名对应的数据类型信息(支持日期格式转换)和rowKey的生成规则等。通过界面可视化预览的方式,很大程度的隐藏细节,不仅可以让用户形象地看到rowkey的格式,要录入数据的格式,并且还大大地提高了效率,减少操作失误的概率,使用户无需编码即可完成预存数据文件向HBase模块330中的导入。
本说明书的实施例中,所述服务器端300的HDFS模块320和HBase模块330是基于Hadoop环境的。
参考图3,本说明书的实施例中,所述服务器的Spark模块310包括:参数接收单元311,被配置为接收所述Spark执行模块150发送的预设格式参数;参数解析单元312,被配置为读取并解析所述预设格式参数,以生成数据存入线程,所述数据存入线程包括将预存数据文件存入到HBase中的业务逻辑,是基于Spark算法运行的;以及线程执行单元313,被配置为通过执行所述数据存入线程,将所述HDFS模块320中的预存数据文件存入HBase模块330中。
本说明书的实施例中,所述参数解析单元312还被具体配置为:根据文件格式生成文件解析方式;根据rowKey的生成规则构造生成rowKey;基于Spark算法将构造生成的rowKey从小到大排序;根据列名和列值生成HashMap,其中列名对应key,列值所在数据数组中的索引为value;根据命名空间和表名,判定是否存在与所述表名对应的HBase表并生成判定结果;根据所述判定结果和HBase分区数生成分区方式;根据HBase分区数生成分区方式;至少基于所述文件解析方式、rowKey、rowKey排序、HashMap和分区方式等参数,把预存数据文件导入到HBASE中。
本说明书的实施例中,所述参数解析单元312还被进一步配置为:根据命名空间和表名读取HBase中的索引表,如果存在与所述表名对应的HBase表,则读取其分区值,根据HBase分区值和HBase分区数生成分区方式;如果不存在,则根据命名空间和表名新建HBase表,根据HBase分区数,生成分区方式。
在实际应用中,所述数据存入线程由线程池维护,所述参数解析单元312可以包括rowKey规则解析器,用于根据rowKey的生成规则构造生成rowKey;所述参数解析单元312还可以包括HBase分区处理器,用于根据HBase分区数和/或Hbase分区值计算生成分区方式。
本说明书的实施例中,所述线程执行单元313还被具体配置为读取HDFS模块320中的预存数据文件;根据所述数据存入线程,将读取的预存数据文件转换成hfile文件;将hfile文件写入HBase模块330中。具体地,通过Spark分布式计算的方式将预存数据文件转换成hfile文件。
本说明书的实施例中,所述服务器端300的Spark模块310还包括执行回执单元314,用于向所述第一终端100发送执行成功回执或执行失败回执,所述执行成功回执代表预存数据文件成功存入HBase中,所述执行失败回执代表预存数据文件未能成功存入HBase中;所述第一终端100还包括Spark信息回调模块160,用于响应于所述执行成功回执生成存入成功提醒,或响应于所述执行失败回执生成存入失败提醒。其中,所述存入成功提醒和存入失败提醒显示在所述浏览器140的Spark执行窗口中,所述存入失败提醒还可以造成失败的步骤、参数或原因等。
在实际应用中,第一终端100可以向Spark模块310同时发送多个预存数据文件录入请求,即同时发送多组预存数据文件的预设格式参数,Spark模块310根据每组预设个数参数生成一个相应的数据存入线程,将多个数据存入线程放入线程池中,此时第一终端100和Spark模块310中断通信连接。Spark模块310通过线程池维护多个数据存入线程的方式和Spark分布式计算的方式,实现多个预存数据文件录入请求的同时执行,最终将多组预设数据文件快速录入到HBase模块330中。
综上,通过Spark分布式计算的方法,把预存数据文件快速生成hfile文件,然后把hfile文件导入到HBase中,整个过程用时短,效率高,尤其适用于GB级别及以上大小的数据文件的导入。
以下介绍本发明基于上述系统的将数据存入HBase的方法,
一种将数据存入HBase的方法,包括:
S100,第一终端100向第二终端200或服务器端300发送文件预览请求,通过读取部分预存数据文件在浏览器140中生成数据预览;
S200,第一终端100通过浏览器140接收用户设置的预存数据文件的格式参数,响应于用户的参数提交请求将所述格式参数封装成预设格式参数,向服务器端300发送所述预设格式参数;
S300,服务器端300的Spark模块310根据所述预设格式参数将HDFS模块320中的预存数据文件存入HBase模块330。
本说明书的实施例中,所述方法还包括,S400,服务器端300向所述第一终端100发送执行成功回执,所述第一终端100响应于所述执行成功回执生成存入成功提醒;或服务器端300向所述第一终端100发送执行失败回执,所述第一终端100响应于所述执行失败回执生成存入失败提醒。
本说明书的实施例中,所述步骤S100具体包括以下情形:
情形一,若所述预存数据文件存储在第二终端200,则所述第一终端100向第二终端200发送文件预览请求,根据第二终端200的IP地址、预存数据文件的存储路径和文件传输协议读取部分预存数据文件,并在浏览器140中生成数据预览;
情形二,若所述预存数据文件存储在服务器端300的HDFS模块320中,则向服务器端300发送文件预览请求,通过预存数据文件在HDFS模块320中的存储路径读取部分预存数据文件,并在浏览器140中生成数据预览。
本说明书的实施例中,所述步骤S200具体包括:
S210,通过浏览器140的参数提交界面接收用户设置的预存数据文件的格式参数;
S220,响应于用户的参数提交请求判定所述格式参数是否有误:
S230,若有误,则驳回参数提交请求,并显示参数错误提醒;
S240,若无误,则将所述格式参数封装后生成预设格式参数,向服务器端300发送所述预设格式参数;
在实际应用中,所述预设格式参数至少包括文件格式、列名、列值、命名空间、表名、HBase分区数和rowKey的生成规则。
本说明书的实施例中,所述步骤S230还包括:
S231,所述第一终端100判定所述预存数据文件的位置:
S232,若所述预存数据文件存储在服务器端300的HDFS模块320中,则直接向服务器端300发送所述预设格式参数;
S233,若所述预存数据文件存储在第二终端200,则通过文件传送协议将预存数据文件发送至服务器端300的HDFS模块320中,再向服务器端300发送所述预设格式参数。
本说明书的实施例中,所述步骤S300具体包括:
S310,所述服务器端300的Spark模块310接收第一终端100发送的预设格式参数;
S320,所述Spark模块310读取并解析所述预设格式参数,生成数据存入线程,所述数据存入线程基于Spark算法运行;
S330,所述Spark模块310通过执行所述数据存入线程,将所述HDFS模块320中的预存数据文件存入HBase模块330中。
本说明书的实施例中,S320具体包括:所述Spark模块310,根据文件格式生成文件解析方式;根据rowKey的生成规则构造生成rowKey;基于Spark算法将构造生成的rowKey从小到大排序;根据列名和列值生成HashMap,其中列名对应key,列值所在数据数组中的索引为value;根据命名空间和表名,判定是否存在与所述表名对应的HBase表并生成判定结果,根据判定结果和HBase分区数生成分区方式。把数据导入到HBASE中。
在实际应用中,所述Spark模块310根据命名空间和表名,判定是否存在与所述表名对应的HBase表并生成判定结果,根据判定结果和HBase分区数生成分区方式;具体可以为:
所述Spark模块310根据命名空间和表名读取HBase中的索引表,若HBase中存在与所述表名相对应的HBase表,则读取其分区值,根据HBase分区值和HBase分区数生成分区方式;若不存在,则根据命名空间和表名新建HBase表,根据HBase分区数,生成分区方式。
本说明书的实施例中,S330具体包括:
S331,读取HDFS模块320中的预存数据文件;
S332,根据所述数据存入线程,将读取的预存数据文件转换成hfile文件;
S333,将hfile文件写入HBase模块330中。
参考图4,以下结合一个具体实施例介绍本书明书具体实施方式提供的将文件存入HBase的方法:
在服务器端300安装好Hadoop、Spark和HBase的操作环境,启动第一终端100上的用于数据录入的各应用程序。用户在浏览器140的前端界面上输入上传预存数据文件的存储路径,第一终端100通过所述路径读取预存数据文件,并在浏览器140的前段界面显示数据预览,具体为在数据预览界面上显示。所述路径包括第二终端200的存储路径或服务器端300HDFS的存储路径,具体读取和显示方式如前文所述,在此不再赘述。
用户通过预览该预存数据文件,在浏览器140的参数提交界面设置并填写格式参数,例如要选择预存数据文件需要录入的列,重命名列族、列名,配置rowKey的生成规则,或添加HBase分区数。用户在浏览器140的参数提交界面上提交格式参数。
第一终端100的参数提交模块120解析格式参数,判定该格式参数是否有误,若有误,则驳回用户的参数提交请求,并显示参数错误提醒,以提示用户修正;若无误,则将该格式参数封装成预设格式参数,并通过socket方式将该预设格式参数发送至服务器端300。
若预存数据文件存储在第二终端200上,则用户提交格式参数后,第一终端100的数据采集模块130将预存数据文件转入至服务器端300的HDFS模块320中,具体如前文所述。
如下,为一个具体的预设格式参数:
本具体实施例中,所述rowKey的生成规则包括数据来源,所述rowKey的数据来源有四种,四种数据来源可以组合,如下:
第一种,来自于预存数据文件中的某一列。也就是,在rowKey的生成规则中,包括取这一列的数据来生成rowKey。该列可以由用户设置,包含在格式参数中;
第二种,来自于用户输入的常量,如果用户在配置时,指定是常量时,那么在生成rowKey的时候,取这个常量来拼接生成rowKey,需要注意的是,rowKey生成不能只指定常量,如果只有常量,就造成所有数据的rowKey都一样;
第三种,来自于文件名,该文件名必须是带日期的。生成rowKey的时候,会去提取文件名的日期格式,然后转成用户想要的日期格式,来拼接生成rowKey;
第四种:来自于随机数,即第一终端100或服务器上的应用程序生成一个随机数来生成rowKey;如用户未指定rowKey的数据来源时,采用这一种方式得到rowKey的生成规则。
服务器端300的Spark模块310接收上述预设格式参数,启动数据录入程序;Spark模块310读取HDFS模块320上的预存数据文件,根据预设格式参数将预存数据文件写入HBase模块330,具体地,写入HBase数据库中。该过程具体包括以下内容:
Spark模块310接收所述预设格式参数,读取并解析该预设格式参数后,封装成数据存入线程,将该数据存入线程放入线程池中,并将解析好的参数打印到日志中,然后返回线程生成信息至第一终端100;所述数据存入线程中就是Spark模块310录入数据到HBase的业务逻辑,基于Spark算法运行。如此,通过新建一个数据存入线程,用线程池维护线程的方式,可以实现多个请求并发执行,解决执行多个请求同时把数据录入HBase的场景。Spark模块310能够将海量数据文件录入到HBase数据库中。所述Spark模块310读取并解析该预设格式参数的具体内容如前文所述。
并且,服务器端300的Spark模块310与第一终端100不是使用长连接的方式通信,而是Spark模块310接收到预设格式参数后,生成数据存入线程,通信即中断了。如此,降低占用的内存,提高运行和计算速度。
在数据存入线程的第一步中,根据预设格式参数中的命名空间与表名,去读取HBase表,如果HBase表已存在,则读取该HBase表的分区值,根据该分区值和Hbase分区数计算生成分区方式;如果HBase表不存在,则新建HBase表。并根据HBase分区数,生成分区方式。该分区方式的计算基于Spark算法。
进一步地,在数据存入线程的第二步中,根据预设格式参数,使用Spark New APIHadoop File的方法,读取HDFS模块320中的预存数据文件。读取该数据后,根据预设格式参数中的编码格式,对预存数据文件数据进行编码转换。然后按文件解析方法,对编码转换后的预存数据文件进行解析,生成与预存数据文件对应的数组。具体地,就是把一行数据,解析分割生成一个数组,得到以数组为单位的数据集合。
进一步地,在数据存入线程的第三步中,执行Spark的map方法,即调用rowKey的生成方法,获取数组对应rowKey的值,然后遍历列名与列值索引的map,生成列名与列值对应的数据集合,并把他们封装到List<Tuple2<Tuple2<String,String>,String>>中。即把以数组为单位的数据集合,变成以List<Tuple2<Tuple2<String,String>,String>>为单位的数据集合。
进一步地,在数据存入线程的第四步中,若HBase表是新建表,则直接接使用Spark的Repartition And Sort Within Partitions方法,对按rowKey将数据集合排序,分区,生成hfile文件,可以是根据HBase分区数平均生成分区;若HBase表是已存在的表,则需要把已经存在的分区与根据Hbase分区数所需要进行的分区进行计算后排序,生成hfile文件。
进一步地,在数据存入线程的第五步中,将hfile文件导入到HBase数据库中。
Spark模块310向第一终端100发送执行成功回执,第一终端100响应于该执行成功回执在浏览器140的前端界面上显示存入成功提醒。
上述说明已经充分揭露了本发明的具体实施方式。需要指出的是,熟悉该领域的技术人员对本发明的具体实施方式所做的任何改动均不脱离本发明的权利要求书的范围。相应地,本发明的权利要求的范围也并不仅仅局限于前述具体实施方式。
Claims (9)
1.一种将数据存入HBase的方法,其特征在于,包括:
第一终端(100)向第二终端(200)或服务器端(300)发送文件预览请求,通过读取部分预存数据文件在浏览器(140)中生成数据预览;
第一终端(100)通过浏览器(140)接收用户设置的预存数据文件的格式参数,响应于用户的参数提交请求将所述格式参数封装成预设格式参数,向服务器端(300)发送所述预设格式参数;
服务器端(300)的Spark模块(310)根据所述预设格式参数将HDFS模块(320)中的预存数据文件存入HBase模块(330);
所述服务器端(300)的Spark模块(310)根据所述预设格式参数将HDFS模块(320)中的预存数据文件存入HBase模块(330);包括,
所述服务器端(300)的Spark模块(310)接收第一终端(100)发送的预设格式参数;
所述Spark模块(310)读取并解析所述预设格式参数,生成数据存入线程,所述数据存入线程基于Spark算法运行;
所述Spark模块(310)通过执行所述数据存入线程,将所述HDFS模块(320)中的预存数据文件存入HBase模块(330)中。
2.根据权利要求1所述的方法,其特征在于,所述第一终端(100)通过浏览器(140)接收用户设置的预存数据文件的格式参数,响应于用户的参数提交请求将所述格式参数封装成预设格式参数,向服务器端(300)发送所述预设格式参数;具体包括,
通过浏览器(140)的参数提交界面接收用户设置的预存数据文件的格式参数;
响应于用户的参数提交请求判定所述格式参数是否有误:
若有误,则驳回参数提交请求,并显示参数错误提醒;
若无误,则将所述格式参数封装后生成预设格式参数,向服务器端(300)发送所述预设格式参数;
所述预设格式参数至少包括文件格式、列名、列值、命名空间、表名、HBase分区数和rowKey的生成规则。
3.根据权利要求2所述的方法,其特征在于,所述若无误,则将所述格式参数封装后生成预设格式参数,向服务器端(300)发送所述预设格式参数;还包括,
所述第一终端(100)判定所述预存数据文件的位置:
若所述预存数据文件存储在服务器端(300)的HDFS模块(320)中,则直接向服务器端(300)发送所述预设格式参数;
若所述预存数据文件存储在第二终端(200),则通过文件传送协议将预存数据文件发送至服务器端(300)的HDFS模块(320)中,再向服务器端(300)发送所述预设格式参数。
4.根据权利要求1-3中任一所述的方法,其特征在于,所述第一终端(100)向第二终端(200)或服务器端(300)发送文件预览请求,通过读取部分预存数据文件在浏览器(140)中生成数据预览;包括,
若所述预存数据文件存储在第二终端(200),则所述第一终端(100)向第二终端(200)发送文件预览请求,根据第二终端(200)的IP地址、预存数据文件的存储路径和文件传输协议读取部分预存数据文件,并在浏览器(140)中生成数据预览;
若所述预存数据文件存储在服务器端(300)的HDFS模块(320)中,则向服务器端(300)发送文件预览请求,通过预存数据文件在HDFS模块(320)中的存储路径读取部分预存数据文件,并在浏览器(140)中生成数据预览。
5.根据权利要求1所述的方法,其特征在于,所述Spark模块(310)读取并解析所述预设格式参数,具体包括,所述Spark模块(310):
根据文件格式生成文件解析方式;
根据rowKey的生成规则构造生成rowKey;
基于Spark算法将构造生成的rowKey从小到大排序;
根据列名和列值生成HashMap,其中列名对应key,列值所在数据数组中的索引为value;
根据命名空间和表名,判定是否存在与所述表名对应的HBase表并生成判定结果根据所述判定结果和HBase分区数生成分区方式。
6.根据权利要求1所述的方法,其特征在于,所述Spark模块(310)通过执行所述数据存入线程,将所述HDFS模块(320)中的预存数据文件存入HBase模块(330)中;包括,
读取HDFS模块(320)中的预存数据文件;
根据所述数据存入线程,将读取的预存数据文件转换成hfile文件;
将hfile文件写入HBase模块(330)中。
7.根据权利要求5所述的方法,其特征在于,所述Spark模块(310)根据命名空间和表名,判定是否存在与所述表名对应的HBase表并生成判定结果;根据判定结果和HBase分区数生成分区方式;具体包括,
所述Spark模块(310)根据命名空间与表名读取Hbase表,如果存在与所述表名对应的HBase表,则读取其分区值,根据HBase分区值和HBase分区数生成分区方式;如果不存在,则新建Hbase表,根据HBase分区数生成分区方式。
8.根据权利要求1-3和6-7中任一所述的方法,其特征在于,还包括,服务器端(300)向所述第一终端(100)发送执行成功回执,所述第一终端(100)响应于所述执行成功回执生成存入成功提醒;或
服务器端(300)向所述第一终端(100)发送执行失败回执,所述第一终端(100)响应于所述执行失败回执生成存入失败提醒。
9.一种将数据存入HBase的系统,其特征在于,所述系统执行权利要求1-8中任一所述的方法,包括:
第一终端(100),用于向第二终端(200)或服务器端(300)发送文件预览请求,通过读取部分预存数据文件在浏览器(140)中生成数据预览界面;以及用于通过浏览器(140)接收用户设置的预存数据文件的格式参数,根据所述格式参数生成预设格式参数,并响应于用户的参数提交请求向服务器端(300)发送预设格式参数;
服务器端(300),包括Spark模块(310)、HDFS模块(320)和HBase模块(330),所述Spark模块(310)用于根据所述预设格式参数将所述HDFS模块(320)中的预存数据文件存入所述HBase模块(330)中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811619852.3A CN109766388B (zh) | 2018-12-28 | 2018-12-28 | 一种将数据存入HBase的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811619852.3A CN109766388B (zh) | 2018-12-28 | 2018-12-28 | 一种将数据存入HBase的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109766388A CN109766388A (zh) | 2019-05-17 |
CN109766388B true CN109766388B (zh) | 2021-02-09 |
Family
ID=66451709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811619852.3A Active CN109766388B (zh) | 2018-12-28 | 2018-12-28 | 一种将数据存入HBase的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766388B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389402A (zh) * | 2015-12-29 | 2016-03-09 | 曙光信息产业(北京)有限公司 | 一种面向大数据的etl方法和装置 |
CN105550296A (zh) * | 2015-12-10 | 2016-05-04 | 深圳市华讯方舟软件技术有限公司 | 一种基于spark-SQL大数据处理平台的数据导入方法 |
CN106682100A (zh) * | 2016-12-02 | 2017-05-17 | 浙江宇视科技有限公司 | 一种基于Hbase数据库的数据统计方法与系统 |
CN106708854A (zh) * | 2015-11-13 | 2017-05-24 | 博雅网络游戏开发(深圳)有限公司 | 数据导出方法和装置 |
CN106815338A (zh) * | 2016-12-25 | 2017-06-09 | 北京中海投资管理有限公司 | 一种大数据的实时存储、处理和查询系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189531B2 (en) * | 2012-11-30 | 2015-11-17 | Orbis Technologies, Inc. | Ontology harmonization and mediation systems and methods |
-
2018
- 2018-12-28 CN CN201811619852.3A patent/CN109766388B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708854A (zh) * | 2015-11-13 | 2017-05-24 | 博雅网络游戏开发(深圳)有限公司 | 数据导出方法和装置 |
CN105550296A (zh) * | 2015-12-10 | 2016-05-04 | 深圳市华讯方舟软件技术有限公司 | 一种基于spark-SQL大数据处理平台的数据导入方法 |
CN105389402A (zh) * | 2015-12-29 | 2016-03-09 | 曙光信息产业(北京)有限公司 | 一种面向大数据的etl方法和装置 |
CN106682100A (zh) * | 2016-12-02 | 2017-05-17 | 浙江宇视科技有限公司 | 一种基于Hbase数据库的数据统计方法与系统 |
CN106815338A (zh) * | 2016-12-25 | 2017-06-09 | 北京中海投资管理有限公司 | 一种大数据的实时存储、处理和查询系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109766388A (zh) | 2019-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106598591B (zh) | 一种网页动态菜单生成方法及装置 | |
CN108519967B (zh) | 图表可视化方法、装置、终端和存储介质 | |
US11775501B2 (en) | Trace and span sampling and analysis for instrumented software | |
CN112905595A (zh) | 一种数据查询方法、装置及计算机可读存储介质 | |
CN110032604B (zh) | 数据存储装置、转译装置及数据库访问方法 | |
CN111736775A (zh) | 多源存储方法、装置、计算机系统及存储介质 | |
CN106294695A (zh) | 一种面向实时大数据搜索引擎的实现方法 | |
US11921720B1 (en) | Systems and methods for decoupling search processing language and machine learning analytics from storage of accessed data | |
CN112052138A (zh) | 业务数据质量检测方法、装置、计算机设备及存储介质 | |
KR102369238B1 (ko) | 웹 트래픽 데이터를 처리 및 관리하는 시스템, 장치 및 방법 | |
US11481361B1 (en) | Cascading payload replication to target compute nodes | |
US20210232611A1 (en) | Systems and methods for high efficiency data querying | |
CN108140022B (zh) | 数据查询方法和数据库系统 | |
CN111949856A (zh) | 基于web的对象存储查询方法及装置 | |
CN111694811A (zh) | 一种批量数据入库方法及装置 | |
CN111026972B (zh) | 物联网中的订阅数据推送方法、装置、设备及存储介质 | |
CN109766388B (zh) | 一种将数据存入HBase的方法和系统 | |
CN111459943A (zh) | 一种数据处理方法、装置、系统、设备及存储介质 | |
CN110874349A (zh) | 一种文件整理方法和装置 | |
CN114968917A (zh) | 一种文件数据快速导入方法及装置 | |
CN113868249A (zh) | 一种数据存储方法、装置、计算机设备以及存储介质 | |
US20210141791A1 (en) | Method and system for generating a hybrid data model | |
CN110297842B (zh) | 一种数据比对方法、装置、终端和存储介质 | |
CN110716994B (zh) | 一种支持异构地理数据资源检索的检索方法及装置 | |
CN113626510A (zh) | 交易核对方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |