CN109376149A - 将数据落地到数据平台的方法、设备和存储介质 - Google Patents
将数据落地到数据平台的方法、设备和存储介质 Download PDFInfo
- Publication number
- CN109376149A CN109376149A CN201810962638.1A CN201810962638A CN109376149A CN 109376149 A CN109376149 A CN 109376149A CN 201810962638 A CN201810962638 A CN 201810962638A CN 109376149 A CN109376149 A CN 109376149A
- Authority
- CN
- China
- Prior art keywords
- data
- field
- key
- platform
- value
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000010354 integration Effects 0.000 claims abstract description 16
- 230000006870 function Effects 0.000 claims description 52
- 230000015654 memory Effects 0.000 claims description 34
- 238000013500 data storage Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 238000004321 preservation Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 30
- 235000000332 black box Nutrition 0.000 description 15
- 244000085682 black box Species 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 239000000203 mixture Substances 0.000 description 10
- 241001074639 Eucalyptus albens Species 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 241001074707 Eucalyptus polyanthemos Species 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000009412 basement excavation Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及将数据落地到数据平台的方法、设备和存储介质。所示方法包括:从kafka服务器获取应用平台的数据并存储在指定目录中;去指定目录下读取所述数据,并对所述数据进行解析和整合;将解析和整合后的所述数据存储到数据平台的数据库中。通过本公开的各实施例,能够确保应用平台的海量数据以数据流的形式实时或准实时地落地到大数据平台中,满足了大数据平台的时效性要求。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种用于将应用平台的数据落地到数据平台的方法、设备和存储介质。
背景技术
在很多情况下,需要将应用平台的数据落地到系统的大数据平台中,以供以后分析挖掘。在现有技术的一种方案中,应用平台将数据存储到其关系型数据库oracle中,第二天再通过数据同步一次性落地到数据平台。之所以没有将应用平台的数据实时同步到数据平台是因为,实时数据同步对oracle性能影响很大,因此一般采用T+1天(其中,T表示的是当天,T+1表示的是当天之后一天)的方式同步,这使得数据落地到大数据平台的整个过程冗长滞后。
但是,在某些场景下,应用平台的数据及时落地到大数据平台具有重要意义,例如:(1)存储所有历史数据会便于之后对全量数据进行数据统计及挖掘,以发现相应风险点;(2)数据越快落地到大数据平台,就能越早进行数据挖掘,越早发现风险。很多风险点需要及时从数据中挖掘出来,以采取相应措施,如果数据落地时间超过一天则可能造成无法挽回的损失,比如盗卡交易场景。
由此可见,现有技术中将应用平台的数据落地到大数据平台中的方式并不适合具有较高时效性要求的场景。
发明内容
为解决以上问题中的一个或多个,本发明实施例提供了一种用于将应用平台的数据落地到数据平台的方法、设备和存储介质。
根据本公开的第一方面,提供一种用于将应用平台的数据落地到远程数据平台的方法,其包括:
从kafka服务器获取应用平台的数据并存储在指定目录中;
去指定目录下读取所述数据,并对所述数据进行解析和整合;
将解析和整合后的所述数据存储到数据平台的数据库中。
根据一个示例性实施例,在所述从kafka服务器获取应用平台的数据并存储在指定目录中之前,所述方法还包括:
将应用平台产生的数据发送到kafka服务器;
Kafka服务器将所述数据发布到一频道,该频道被数据平台订阅。
根据一个示例性实施例,所述数据平台具有flume服务器,所述从kafka服务器获取应用平台的数据并存储在指定目录中包括:
flume服务器订阅kafka服务器的用于发布应用平台的数据的频道;
flume服务器从所述频道获取所述数据并存储在指定目录中。
根据一个示例性实施例,所述去指定目录下读取所述数据并对所述数据进行解析和整合包括:
对于所述指定目录下的所述数据,按行获取行数据,其中所述数据为Json字符串格式;
对于每条行数据:
将所述行数据解析并映射封装成Java对象DataObject,其中DataObject包含Java的HashMap实例a以及用于根据key从实例a中获取相应值的方法function;
从数据平台的Hive数据库获取用于管理要存储的所述数据的hive表的表属性信息,其中,所述表属性信息保存多个键-值对,每个键-值对中的键为hive表的字段名称,对应的值为该字段在Json字符串中的路径信息;
将表属性信息中所保存的每个键-值对中的值分别作为key提供给Java对象DataObject所包含的方法function,并将function返回的值作为相应的键所表示的字段的字段值;
将各字段值以“,”分割开并按照表属性信息中表示相应字段的键出现的先后顺序组合成一个字符串。
根据一个示例性实施例,所述将解析和整合后的所述数据存储到数据平台的数据库中包括:
对于每条行数据:
获取在所述hive表中指定的用于存储应用平台的所述数据的存储位置作为value1;
以“day”作为key提供给DataObject的方法function并将返回的值作为value2;
以“sno”作为key提供给DataObject的方法function并将返回的值作为value3;
组合value1、value2、value3,得到用于该条行数据的数据存储目录;以及
将解析和整合该条行数据所得到的字符串写入到所述数据存储目录下的文件中。
根据一个示例性实施例,在所述对所述数据进行解析和整合之前,所述方法还包括:在数据平台的Hive数据库中建立用于管理应用平台的所述数据的hive表并存储所述hive表的表属性信息。
根据一个示例性实施例,由方法function执行的所述根据key从实例a中获取相应值包括:
以key作为关键词在实例a中进行搜索;以及
将行数据中与所述关键词相匹配的字段所对应的值作为相应值返回。
根据一个示例性实施例,在key是由多个字段通过“-”连接起来而形成的组合字符串的情况下,由方法function执行的所述根据key从实例a中获取相应值包括:
以所述多个字段中的第一字段作为关键词在实例a中进行搜索;
将实例a中与第一字段相匹配的字段所对应的对象返回;
针对所述多个字段中第一字段之后的每个字段,执行:
以该字段作为关键词在上一字段作为关键词时返回的对象中进行搜索;以及
将所搜索到的相匹配的对应对象返回;
直到所述多个字段中的最后一个字段为止,并将以最后一个字段作为关键词时返回的对象作为与所述key对应的相应值。
根据本公开的第二方面,提供一种用于将应用平台的数据落地到远程数据平台的装置,其包括:
数据获取模块,其被配置用于从kafka服务器获取应用平台的数据并存储在指定目录中;
数据解析模块,其被配置用于去指定目录下读取所述数据,并对所述数据进行解析和整合;
存储模块,其被配置用于将解析和整合后的所述数据存储到数据平台的数据库中。
根据一个示例性实施例,所述数据解析模块包括:
行数据获取模块,其被配置用于:对于所述指定目录下的所述数据,按行获取行数据,其中所述数据为Json字符串格式;
映射模块,其被配置用于:对于每条行数据,将所述行数据解析并映射封装成Java对象DataObject,其中DataObject包含Java的HashMap实例a以及用于根据key从实例a中获取相应值的方法function;
Hive表获取模块,其被配置用于从数据平台的Hive数据库获取用于管理要存储的所述数据的hive表的表属性信息,其中,所述表属性信息保存多个键-值对,每个键-值对中的键为hive表的字段名称,对应的值为该字段在Json字符串中的路径信息;
字段值获取模块,其被配置用于将表属性信息中所保存的每个键-值对中的值分别作为key提供给每条行数据的Java对象DataObject所包含的方法function,并将function返回的值作为相应的键所表示的字段的字段值;
整合模块,其被配置用于将针对每条行数据所得到的各字段值以“,”分割开并按照表属性信息中表示相应字段的键出现的先后顺序组合成一个字符串。
根据一个示例性实施例,所述存储模块包括:
第一存储位置获取模块,其被配置用于获取在所述hive表中指定的用于存储应用平台的所述数据的存储位置作为value1;
第二存储位置获取模块,其被配置用于以“day”作为key提供给每条行数据的DataObject的方法function并将返回的值作为value2;
第三存储位置获取模块,其被配置用于以“sno”作为key提供给每条行数据的DataObject的方法function并将返回的值作为value3;
组合模块,其被配置用于组合value1、value2、value3,得到用于每条行数据的数据存储目录;以及
写入模块,其被配置用于将解析和整合每条行数据所得到的字符串写入到相对应的所述数据存储目录下的文件中。
根据本公开的第三方面,提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令在被所述处理器执行时,使得所述处理器执行如上所述的方法实施例中的任一个。
根据本公开的第四方面,提供一种存储介质,其上存储有计算机程序,所述计算机程序在被一个或多个处理器执行时实现如上所述的方法实施例中的任一个。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开如上所述以及如下所述的各实施例,确保应用平台的数据以数据流的形式实时或准实时地落地到大数据平台中,满足了大数据平台的时效性要求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
图1是根据一示例性实施例示出的本申请所涉及的实施环境的示意简图。
图2是根据一示例性实施例示出的用于将应用平台的数据落地到数据平台的方法的流程图。
图3是根据图2对应实施例示出的数据落地方法中步骤S210的一种示例性具体实现方式的示意流程图。
图4是根据图2对应实施例示出的数据落地方法中步骤S220的一种示例性具体实现方式的示意流程图。
图5是根据图2对应实施例示出的数据落地方法中步骤S230的一种示例性具体实现方式的示意流程图。
图6是根据一示例性实施例示出的由方法function执行的根据key从实例a中获取相应值的过程的示意流程图。
图7是根据另一示例性实施例示出的由方法function执行的根据key从实例a中获取相应值的过程的示意流程图。
图8是根据一示例性实施例示出的用于将应用平台的数据落地到数据平台的装置的示意组成框图。
图9是图8对应实施例示出的装置的数据解析模块820的示意组成框图。
图10是图8对应实施例示出的装置的存储模块830的示意组成框图。
图11是根据一示例性实施例示出的计算设备的示意组成框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的示例性实施例进行进一步详细说明。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
图1是根据一示例性实施例示出的本申请所涉及的实施环境的示意简图。如图1所示,应用平台110所产生的数据需要实时或准实时地落地到数据平台130的Hive数据库133中。为此,应用平台110将其产生的实时数据以数据流的形式发送到kafka服务器120,kafka服务器120实时地将数据发布到被数据平台130订阅的频道,数据平台130从该频道获取数据并通过数据平台130的数据解析模块132对数据进行解析和整合,然后将解析和整合后的数据存储到Hive数据库133。在图1所示的示例性实施例中,数据平台130具有flume服务器131,其中flume服务器131订阅kafka服务器120发布应用平台110的数据的频道并从其获取该数据,将该数据存储到指定目录下,以供数据解析模块132解析和整合。应用平台110、kafka服务器120、flume服务器131、数据解析模块132和Hive数据库之间通过诸如网络的通信链路相连接。可以理解的是,本申请所涉及的实施环境也可以不具有上述flume服务器131。另外,图1及以上描述只是本公开所涉及的实施环境的示例性实施例,可以理解的是,适用于本申请的实施环境存在多种变形。
图2是根据一示例性实施例示出的用于将应用平台的数据落地到数据平台的方法的流程图。如图2的示例性实施例所示,该方法可以包括步骤:
S210,从kafka服务器获取应用平台的实时数据并存储在指定目录中。
在该步骤之前,应用平台110已经将产生的数据发送到了kafka服务器120,并且Kafka服务器120将该数据发布到了一频道,该频道被数据平台130订阅。在一个示例中,应用平台110将所产生的数据实时地发送给kafka服务器120。
在一个示例中,数据平台130将该频道中的数据拉取到数据平台并存储到指定目录中。
S220,去指定目录下读取所述数据,并对所述数据进行解析和整合。
在一个示例中,数据平台130具有数据解析模块132,由其来读取指定目录下的数据并进行解析和整合。
S230,将解析和整合后的所述数据存储到数据平台的数据库中。
解析和整合后的数据被存储在数据平台130的数据库中,例如Hive数据库133中。在一个示例中,解析和整合后的数据被存储到用于管理所存储的应用平台数据的hive表所指定的数据库目录中。在将数据存储到Hive数据库时,会在Hive数据库中先建立用于管理要存储的数据的hive表以方便查询数据,在该Hive表中指定一个目录作为数据存储目录。
图3是根据图2对应实施例示出的数据落地方法中步骤S210的一种示例性具体实现方式的示意流程图。在该实施例中,数据平台130具有flume服务器131,在这种情况下,步骤S210可以包括步骤:
S310,flume服务器订阅kafka服务器的用于发布应用平台的数据的频道。
S320,flume服务器从所述频道获取所述数据并存储在指定目录中。
在一个示例中,一旦应用平台的数据被kafka服务器发布在频道,flume服务器立即消费该数据,即拉取该数据。Flume服务器一般会将数据拉取到临时目录中,在预定时间段(例如5分钟)内,将该数据转存到指定目录中。
图4是根据图2对应实施例示出的数据落地方法中步骤S220的一种示例性具体实现方式的示意流程图。在该实施例中给出了数据平台对所获取的数据进行解析和整合的示例流程。如图4所示,步骤S220可以包括步骤:
S410,对于指定目录下的数据,按行获取行数据。
在一个示例中,应用平台110所产生的数据为Json字符串格式,即这里数据平台读取的行数据也是Json字符串格式。
S420,对于每条行数据,将该行数据解析并映射封装成Java对象DataObject。
其中,DataObject包含Java的HashMap实例a,以及用于根据key从实例a中获取相应值的方法function。实例a可以由Json映射产生,例如,使用org.codehaus.jackson.map.ObjectMapper将Json字符串映射成HashMap实例。
S430,从数据平台的Hive数据库获取用于管理要存储的应用平台数据的hive表的表属性信息。
该Hive表在解析和整合步骤S220之前就已被建立,并且在Hive数据库中存储有该Hive表的表属性信息(tblproperties)。Hive表的建立和表属性信息的存储可以通过执行建表语句来实现,在建表语句中定义表属性信息。表属性信息中保存有多个键-值对,每个键-值对中的键为hive表中的字段名称,对应的值为该字段在Json字符串中的路径信息。
也可以说,应用平台和数据平台约定了它们之间的Json字符串数据流的具体格式(例如,包含的字段、各字段的路径),并根据该具体格式在建Hive表时定义表属性信息。
表属性信息中包含的字段及其路径是根据应用平台产生的数据的具体数据格式而设置的。一般而言,在应用平台上是按照预先定义的固定格式来产生数据的,因此,应用平台数据可能包含的字段集合以及字段路径是已知和固定的。在设置表属性信息时,可以将应用平台数据可能包含的所有字段及其路径都包括进去,在解析每条行数据时,如果该条行数据不包含某字段,则将该字段的值设置为空。只要应用平台产生的数据的格式不变化,表属性信息中的字段及路径信息就无需改变。一旦应用平台数据的格式发生改变,那么就相应地修改建表语句中的表属性(tblproperties)信息即可。
下面示出了一段应用平台数据的示例:
针对上述示例,在设置表属性信息时,可定义字段“occur_time”表示业务发生的时间节点,其对应的路径为“request-occur_time”;可定义字段“sparta_isroot”表示设备是否被root,其对应的路径为“request-sparta.isroot”;可定义字段“risk_id”表示业务风险ID,其对应的路径为“risk_id”;可定义“request_ip_country”表示请求IP所在国家,其对应的路径为“request-_preparedParameters_.ip_country”。在设置表属性信息时可以考虑所有可能涉及的字段,即,除了考虑上述示例数据,还可以考虑其他可能的数据来确定表属性信息中包含的字段及其路径。
S440,将表属性信息中所保存的每个键-值对中的值分别作为key提供给每条行数据的Java对象DataObject所包含的方法function,并将function返回的值作为相应的键所表示的字段的字段值。
由此可以为每条行数据得到Hive表中定义的各字段的字段值。
S450,将每条行数据的各字段值以“,”分割开并按照表属性信息中表示相应字段的键出现的先后顺序组合成一个字符串。
图5是根据图2对应实施例示出的数据落地方法中步骤S230的一种示例性具体实现方式的示意流程图。在该实施例中给出了数据平台将解析和整合后的数据存储到数据平台的数据库中的示例流程。如图5所示,步骤S230可以包括步骤:
S510,获取在hive表中指定的用于存储应用平台数据的存储位置作为value1。
S520,以“day”作为key提供给每条行数据的DataObject的方法function并将返回的值作为value2。
S530,以“sno”作为key提供给每条行数据的DataObject的方法function并将返回的值作为value3。
S540,组合value1、value2、value3,得到用于每条行数据的相应的数据存储目录。
在一个示例中,假设value1为/hive/data/kafka_request,并且假设对于某条行数据来说value2为2018-01-01,value3为03,则组合后得到hive/data/kafka_request/day=2018-01-01/sno=03,作为该条行数据的数据存储目录。
S550,将解析和整合每条行数据所得到的字符串分别写入到相应的数据存储目录下的文件中。
在一个示例中,在数据存储目录下已有文件,则以追加的方式将字符串写入该文件中,即在原有文件的末尾另起一行写入数据。在另一示例中,在数据存储目录下不存在文件,则需要新建一个文件,将字符串写入该文件中。
图6是根据一示例性实施例示出的如步骤S440中提到的由方法function执行的根据key从实例a中获取相应值的过程的示意流程图。如图6所示,该过程可以包括步骤:
S610,以key作为关键词在实例a中进行搜索;以及
S620,将行数据中与所述关键词相匹配的字段所对应的值作为相应值返回。
结合步骤S440可知,步骤S610和S620是为表属性信息中定义的各字段在每条行数据中查找对应的字段值的过程。在一个示例中,如果行数据中不存在相匹配的字段,则返回空值,表示作为key的键所表示的字段的值为空。
图7是根据另一示例性实施例示出的由方法function执行的根据key从实例a中获取相应值的过程的示意流程图。在该实施例中,key是由多个字段通过“-”连接起来而形成的组合字符串,在这种情况下,该过程可以包括步骤:
S710,以所述多个字段中的第一字段作为关键词在实例a中进行搜索。
S720,将实例a中与第一字段相匹配的字段所对应的对象返回。
在一个示例中,对应的对象可能不是一个字段值,而是一个组合字符串。
S730,针对所述多个字段中第一字段之后的每个字段,执行:
以该字段作为关键词在上一字段作为关键词时返回的对象中进行搜索;以及
将所搜索到的相匹配的对应对象返回;
其中,如果搜索不到相匹配的对应对象,则返回空值。
S740,直到判断为该字段为所述多个字段中的最后一个字段为止。
S750,将以最后一个字段作为关键词时返回的对象作为与所述key对应的相应值。
下面以一个示例为例来描述数据平台读取指定目录下的应用平台数据,对其进行解析和整合后存储到Hive数据库中的过程。
如上所述,为了管理要存储的应用平台数据,可以通过在Hive中执行建表语句来建立相应的Hive表,该建表语句假设为:
create table external example_001(black_box string,white_box string,blue_box string,red_box_type string,red_box_color string)partitioned by(daystring,sno string)row format delimited fields terminated by','stored as orclocation“/data/hive/example_001/”tblproperties(black_box=black_box,white_box=white_box,blue_box=blue_box,red_box_type=red_box-type,red_box_color=red_box-color);
其中,tblproperties中定义了如下键-值对:black_box=black_box,white_box=white_box,blue_box=blue_box,red_box_type=red_box-type,red_box_color=red_box-color。
假设数据平台所读取的Json字符串格式的某条行数据为:
{"day":"2018-04-28","sno":"01","black_box":"black_box_123","white_box":"white_box_123","blue_box":"blue_box_123","red_box":{"type":"red_x","color":"red"}}
数据平台将该行数据解析成一个DataObject实例javaObj1,javaObj1的方法function可以根据不同的key获取到不同的值,比如可以根据day获取到对应值2018-04-28,根据black_box可以获取到对应值black_box_123,根据red_box,可以获取到{"type":"red_x","color":"red"}。
在一个示例中,key可以是一个字符串,或者是通过“-”连接的一个或者多个字符串组合成的组合字符串,比如“x-y-z”或者“xx”。方法function首先将key“x-y-z”分割成x、y、z,从行数据中取得x对应的值a,再从a中取出y对应的值b,再从b中取得z对应的值c。若上述某步取不到值,则返回一个空值。例如,如果key为red_box-type,则首先按“-”分割得到red_box和type,根据red_box在上述示例行数据中查找得到对应对象{"type":"red_x","color":"red"},再根据type从{"type":"red_x","color":"red"}中查找得到对应值red_x,最终可以得到返回值red_x。相似地,根据red_box-color可以得到返回值red。
数据平台获取上述示例tblproperties信息中保存的键-值对,即black_box=black_box,white_box=white_box,blue_box=blue_box,red_box_type=red_box-type,red_box_color=red_box-color,并针对上述示例行数据遍历上述5组键-值对,以分别得到每个字段的对应值。比如,首先获取到键-值对black_box=black_box,键为black_box(字段名),值为black_box(路径信息),将“black_box”作为key提供给javaObj1的方法function,则可以获得值black_box_123,即,字段black_box对应的值为black_box_123。
在建Hive表时,可以为该表所管理的数据指定存储位置(例如,上述建表语句中的“stored as orc location“/data/hive/example_001/””表示指定该表所管理的数据存储到“/data/hive/example_001/”目录下),该指定的存储位置信息被存储在hive库中。数据平台可以查询hive库以得到指定的存储位置(“/data/hive/example_001/”),并与以“day”作为key返回的值“2018-04-28”以及以“sno”作为key返回的值“01”相组合,得到数据存储目录“/data/hive/example_001/day=2018-04-28/sno=01/”。在本示例中,将该目录作为所读取的上述示例行数据的数据存储目录。
数据平台将针对每条行数据得到的各字段的值以“,”分割开并按tblproperties信息中各字段出现的先后顺序组合成一个字符串(例如,在上面的示例中,最终得到的字符串为:“black_box_123,white_box_123,blue_box_123,red_x,red”),并将该字符串写入到/data/hive/example_001/day=2018-04-28/sno=01/目录下的文件中。
这里只是简单描述单条数据怎么写入到数据存储目录下的文件中,多条数据的写入过程在这里不赘述,可参考Hadoop的MapReduce过程。
通过如上所述的各实施例,应用平台产生的数据以数据流的形式被实时发送到kafka服务器并被数据平台实时地获取、解析和整合,然后存储到数据平台的数据库,使得数据能够实时地落地到数据平台,保证了数据平台的时效性。
图8是根据一示例性实施例示出的用于将应用平台的数据落地到数据平台的装置的示意组成框图。该示例装置801用于将应用平台的数据落地到数据平台的方法。在一个示例中,装置801上部署有数据平台130的全部和部分,可以将装置801实现为图1中所示的flume服务器131和数据解析模块132。如图8的示例中所示,该装置801可以包括:
数据获取模块810,其被配置用于从kafka服务器获取应用平台的实时数据并存储在指定目录中;
数据解析模块820,其被配置用于去指定目录下读取所述数据,并对所述数据进行解析和整合;
存储模块830,其被配置用于将解析和整合后的所述数据存储到数据平台的数据库中。
图9是图8对应实施例示出的装置的数据解析模块820的示意组成框图。如图9中所示,数据解析模块820可以包括:
行数据获取模块910,其被配置用于:对于所述指定目录下的所述数据,按行获取行数据,其中所述数据为Json字符串格式;
映射模块920,其被配置用于:对于每条行数据,将所述行数据解析并映射封装成Java对象DataObject,其中DataObject包含Java的HashMap实例a以及用于根据key从实例a中获取相应值的方法function;
Hive表获取模块930,其被配置用于从数据平台的Hive数据库获取用于管理要存储的所述数据的hive表的表属性信息,其中,所述表属性信息保存多个键-值对,每个键-值对中的键为hive表的字段名称,对应的值为该字段在Json字符串中的路径信息;
字段值获取模块940,其被配置用于将表属性信息中所保存的每个键-值对中的值分别作为key提供给每条行数据的Java对象DataObject所包含的方法function,并将function返回的值作为相应的键所表示的字段的字段值;
整合模块950,其被配置用于将将针对每条行数据所得到的各字段值以“,”分割开并按照表属性信息中表示相应字段的键出现的先后顺序组合成一个字符串。
在一个示例中,数据解析模块820可以用Java语言编写的MapReduce的job的形式来实现.
图10是图8对应实施例示出的装置的存储模块830的示意组成框图。如图10中所示,存储模块830可以包括:
第一存储位置获取模块1010,其被配置用于获取在所述hive表中指定的用于存储应用平台的所述数据的存储位置作为value1;
第二存储位置获取模块1020,其被配置用于以“day”作为key提供给每条行数据的DataObject的方法function并将返回的值作为value2;
第三存储位置获取模块1030,其被配置用于以“sno”作为key提供给每条行数据的DataObject的方法function并将返回的值作为value3;
组合模块1040,其被配置用于组合value1、value2、value3,得到用于每条行数据的数据存储目录;以及
写入模块1050,其被配置用于将解析和整合每条行数据所得到的字符串写入到相对应的所述数据存储目录下的文件中。
上述装置中各个单元/模块的功能和作用的实现过程以及相关细节具体详见上述方法实施例中对应步骤的实现过程,在此不再赘述。
以上各实施例中的装置实施例可以通过硬件、软件、固件或其组合的方式来实现,并且其可以被实现为一个单独的装置,也可以被实现为各组成单元/模块分散在一个或多个计算设备中并分别执行相应功能的逻辑集成系统。
以上各实施例中组成该装置的各单元/模块是根据逻辑功能而划分的,它们可以根据逻辑功能被重新划分,例如可以通过更多或更少的单元/模块来实现该装置。这些组成单元/模块分别可以通过硬件、软件、固件或其组合的方式来实现,它们可以是分别的独立部件,也可以是多个组件组合起来执行相应的逻辑功能的集成单元/模块。所述硬件、软件、固件或其组合的方式可以包括:分离的硬件组件,通过编程方式实现的功能模块、通过可编程逻辑器件实现的功能模块,等等,或者以上方式的组合。
根据一个示例性实施例,该装置可被实现为一种计算设备,该计算设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时,使得所述处理器执行如上所述的各方法实施例中的任一个,即,所述计算机程序在被所述处理器执行时使得该计算设备实现如上所述的装置各实施例的组成单元/模块所实现的功能。
上面的实施例中所述的处理器可以指单个的处理单元,如中央处理单元CPU,也可以是包括多个分散的处理单元的分布式处理器系统。
上面的实施例中所述的存储器可以包括一个或多个存储器,其可以是计算设备的内部存储器,例如暂态或非暂态的各种存储器,也可以是通过存储器接口连接到计算设备的外部存储装置。
图11示出了这样的计算设备1101的一个示例性实施例的示意组成框图。如图11所示,计算设备1101可以包括:处理器1110、通信接口1120、存储器1130和总线1140。存储器1130内存储有可被处理器1110执行的计算机程序。处理器1110执行所述计算机程序时实现上述实施例中的方法及装置的功能。存储器1130和处理器1110的数量分别可以为一个或多个。通信接口1120用于处理器1110与外部设备之间的通信。
其中,处理器1110可以是中央处理单元、通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的流程步骤、功能单元/模块和/或电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合、数字信号处理器等等。
存储器1130可以包括易失性存储器和/或非易失性存储器,例如非易失性动态随机存取存储器、相变随机存取存储器、磁阻式随机存取存储器、磁盘存储器、电子可擦除可编程只读存储器、闪存器件、半导体器件(例如固态硬盘)等。存储器1130可选地还可以是外部远程存储装置。
总线1140可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,Peripheral Component)总线或扩展工业标准体系结构(EISA,Extended Industry Standard Component)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。可选地,如果存储器1130、处理器1110及通信接口1120集成在一块芯片上,则存储器1130、处理器1110及通信接口1120可以通过内部接口完成相互间的通信。
以上各方法和装置实施例还可以被实现为计算机程序的形式,被存储在存储介质上,并且可被分发。因此,根据本公开的另一方面,还提供一种存储介质,其上存储有可供处理器执行的计算机程序,所述计算机程序在被处理器执行时实现如上所述的各方法和装置实施例中的任一个。
该存储介质可以是任何可以保持和存储可由指令执行设备使用的指令的有形设备。例如,其可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
这里所描述的计算机程序/计算机指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
本公开中所述的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。但本领域技术人员应当清楚的是,上述各实施例可以根据需要单独使用或者相互结合使用。另外,对于装置实施例而言,由于其是与方法实施例相对应,所以描述得比较简单,相关之处参见方法实施例的对应部分的说明即可。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种用于将应用平台的数据落地到远程数据平台的方法,其特征在于,包括:
从kafka服务器获取应用平台的数据并存储在指定目录中;
去指定目录下读取所述数据,并对所述数据进行解析和整合;
将解析和整合后的所述数据存储到数据平台的数据库中。
2.如权利要求1所述的方法,其特征在于,所述数据平台具有flume服务器,所述从kafka服务器获取应用平台的数据并存储在指定目录中包括:
flume服务器订阅kafka服务器的用于发布应用平台的数据的频道;
flume服务器从所述频道获取所述数据并存储在指定目录中。
3.如权利要求1所述的方法,其特征在于,所述去指定目录下读取所述数据并对所述数据进行解析和整合包括:
对于所述指定目录下的所述数据,按行获取行数据,其中所述数据为Json字符串格式;
对于每条行数据:
将所述行数据解析并映射封装成Java对象DataObject,其中DataObject包含Java的HashMap实例a以及用于根据key从实例a中获取相应值的方法function;
从数据平台的Hive数据库获取用于管理要存储的所述数据的hive表的表属性信息,其中,所述表属性信息保存多个键-值对,每个键-值对中的键为hive表的字段名称,对应的值为该字段在Json字符串中的路径信息;
将表属性信息中所保存的每个键-值对中的值分别作为key提供给Java对象DataObject所包含的方法function,并将function返回的值作为相应的键所表示的字段的字段值;
将各字段值以“,”分割开并按照表属性信息中表示相应字段的键出现的先后顺序组合成一个字符串。
4.如权利要求3所述的方法,其特征在于,所述将解析和整合后的所述数据存储到数据平台的数据库中包括:
对于每条行数据:
获取在所述hive表中指定的用于存储应用平台的所述数据的存储位置作为value1;
以“day”作为key提供给DataObject的方法function并将返回的值作为value2;
以“sno”作为key提供给DataObject的方法function并将返回的值作为value3;
组合value1、value2、value3,得到用于该条行数据的数据存储目录;以及
将解析和整合该条行数据所得到的字符串写入到所述数据存储目录下的文件中。
5.如权利要求1所述的方法,其特征在于,在所述对所述数据进行解析和整合之前,所述方法还包括:在数据平台的Hive数据库中建立用于管理应用平台的所述数据的hive表并存储所述hive表的表属性信息。
6.如权利要求3所述的方法,其特征在于,由方法function执行的所述根据key从实例a中获取相应值包括:
以key作为关键词在实例a中进行搜索;以及
将行数据中与所述关键词相匹配的字段所对应的值作为相应值返回。
7.如权利要求6所述的方法,其特征在于,在key是由多个字段通过“-”连接起来而形成的组合字符串的情况下,由方法function执行的所述根据key从实例a中获取相应值包括:
以所述多个字段中的第一字段作为关键词在实例a中进行搜索;
将实例a中与第一字段相匹配的字段所对应的对象返回;
针对所述多个字段中第一字段之后的每个字段,执行:
以该字段作为关键词在上一字段作为关键词时返回的对象中进行搜索;以及
将所搜索到的相匹配的对应对象返回;
直到所述多个字段中的最后一个字段为止,并将以最后一个字段作为关键词时返回的对象作为与所述key对应的相应值。
8.一种用于将应用平台的数据落地到远程数据平台的装置,其特征在于,包括:
数据获取模块,其被配置用于从kafka服务器获取应用平台的数据并存储在指定目录中;
数据解析模块,其被配置用于去指定目录下读取所述数据,并对所述数据进行解析和整合;
存储模块,其被配置用于将解析和整合后的所述数据存储到数据平台的数据库中。
9.一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述的方法。
10.一种存储介质,其上存储有计算机程序,所述计算机程序在被一个或多个处理器执行时实现如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810962638.1A CN109376149A (zh) | 2018-08-22 | 2018-08-22 | 将数据落地到数据平台的方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810962638.1A CN109376149A (zh) | 2018-08-22 | 2018-08-22 | 将数据落地到数据平台的方法、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109376149A true CN109376149A (zh) | 2019-02-22 |
Family
ID=65403824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810962638.1A Pending CN109376149A (zh) | 2018-08-22 | 2018-08-22 | 将数据落地到数据平台的方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109376149A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765131A (zh) * | 2019-10-09 | 2020-02-07 | 苏宁云计算有限公司 | 货源数据的数据压缩方法、装置、计算机设备和存储介质 |
CN112765109A (zh) * | 2021-01-20 | 2021-05-07 | 商客通尚景科技(上海)股份有限公司 | 一种队列式数据存储分析方法及系统 |
CN113094342A (zh) * | 2021-04-02 | 2021-07-09 | 上海中通吉网络技术有限公司 | 数据持久化的方法、装置及设备、存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868253A (zh) * | 2015-12-23 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 数据导入、查询方法及装置 |
CN107943979A (zh) * | 2017-11-29 | 2018-04-20 | 山东鲁能软件技术有限公司 | 一种数据库之间数据的准实时同步方法及装置 |
CN107958082A (zh) * | 2017-12-15 | 2018-04-24 | 杭州有赞科技有限公司 | 数据库到数据仓库的离线增量同步方法及系统 |
CN107979477A (zh) * | 2016-10-21 | 2018-05-01 | 苏宁云商集团股份有限公司 | 一种业务监控的方法及系统 |
-
2018
- 2018-08-22 CN CN201810962638.1A patent/CN109376149A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868253A (zh) * | 2015-12-23 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 数据导入、查询方法及装置 |
CN107979477A (zh) * | 2016-10-21 | 2018-05-01 | 苏宁云商集团股份有限公司 | 一种业务监控的方法及系统 |
CN107943979A (zh) * | 2017-11-29 | 2018-04-20 | 山东鲁能软件技术有限公司 | 一种数据库之间数据的准实时同步方法及装置 |
CN107958082A (zh) * | 2017-12-15 | 2018-04-24 | 杭州有赞科技有限公司 | 数据库到数据仓库的离线增量同步方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765131A (zh) * | 2019-10-09 | 2020-02-07 | 苏宁云计算有限公司 | 货源数据的数据压缩方法、装置、计算机设备和存储介质 |
CN112765109A (zh) * | 2021-01-20 | 2021-05-07 | 商客通尚景科技(上海)股份有限公司 | 一种队列式数据存储分析方法及系统 |
CN112765109B (zh) * | 2021-01-20 | 2024-05-28 | 商客通尚景科技(上海)股份有限公司 | 一种队列式数据存储分析方法及系统 |
CN113094342A (zh) * | 2021-04-02 | 2021-07-09 | 上海中通吉网络技术有限公司 | 数据持久化的方法、装置及设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11550826B2 (en) | Method and system for generating a geocode trie and facilitating reverse geocode lookups | |
CN108140007B (zh) | 跨部署位置安全地部署应用程序 | |
US11244011B2 (en) | Ingestion planning for complex tables | |
Strohbach et al. | Towards a big data analytics framework for IoT and smart city applications | |
US20170286190A1 (en) | Structural and temporal semantics heterogeneous information network (hin) for process trace clustering | |
US11210268B2 (en) | Scalable space-time density data fusion | |
US10678482B2 (en) | Multi-tier data synchronizer based on concurrent linked list | |
CN109376149A (zh) | 将数据落地到数据平台的方法、设备和存储介质 | |
US20190121895A1 (en) | Graph-based searching for data stream | |
CN110334075A (zh) | 基于消息中间件的数据迁移方法及相关设备 | |
US20200082026A1 (en) | Graph data processing | |
CN112528090B (zh) | 图数据的存储方法和存储装置 | |
US20210217187A1 (en) | Method and apparatus for image processing and computer storage medium | |
CN112187713B (zh) | 报文转换的方法、装置、计算机设备和存储介质 | |
US20180246906A1 (en) | Generating a ranked list of best fitting place names | |
CN115510249A (zh) | 一种知识图谱的构建方法及装置、电子设备、存储介质 | |
CN114281803A (zh) | 数据迁移方法、装置、设备、介质和程序产品 | |
US20220391529A1 (en) | Searching, matching, and masking of composite formats | |
US11514062B2 (en) | Feature value generation device, feature value generation method, and feature value generation program | |
US20140324918A1 (en) | Database Generation System, Method For Generating A Database, Product Line Management System And Non-Transitory Data Carrier | |
US9542246B2 (en) | Sharing a partitioned data set across parallel applications | |
Lan et al. | Spark sensing: A cloud computing framework to unfold processing efficiencies for large and multiscale remotely sensed data, with examples on landsat 8 and modis data | |
US11182409B2 (en) | Data processing with tags | |
Zaslavskiy et al. | Implementation of the new REST API for open source LBS-platform Geo2Tag | |
US8688857B1 (en) | Filtering messages based on pruning profile generated from pruning profile schema |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190222 |