CN112800073B - 一种基于NiFi更新Delta Lake的方法 - Google Patents
一种基于NiFi更新Delta Lake的方法 Download PDFInfo
- Publication number
- CN112800073B CN112800073B CN202110107924.1A CN202110107924A CN112800073B CN 112800073 B CN112800073 B CN 112800073B CN 202110107924 A CN202110107924 A CN 202110107924A CN 112800073 B CN112800073 B CN 112800073B
- Authority
- CN
- China
- Prior art keywords
- data
- nifi
- task
- delta
- lake
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明特别涉及一种基于NiFi更新Delta Lake的方法。该基于NiFi更新Delta Lake的方法,为保证增量数据的顺序性,以kafka为消息中间件进行存储读取;NiFi处理器启动sparkStreaming程序读取kafka主题数据,并对Delta Lake存储层的数据进行更新;Hive组件通过metastore对Delta Lake存储层创建的表进行关联,从而间接实现对Hive表的更新,即可通过SparkSql进行查询计算。该基于NiFi更新Delta Lake的方法,配置简单,将提交sparkstreaming程序与启动kafka生产者客户端合并为一个处理器,大大减少了使用者的配置复杂度,同时解决了Hive表中更新数据复杂且效率低的问题,能够满足大部分业务的增量需求,运行稳定,开发成本低,具有广泛的应用场景。
Description
技术领域
本发明涉及数据湖技术领域,特别涉及一种基于NiFi更新Delta Lake的方法。
背景技术
现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物。现在很多公司数据架构中都存在数据湖,数据湖是一种大型数据存储库和处理引擎。它能够存储大量各种类型的数据,拥有强大的信息处理能力和处理几乎无限的并发任务或工作的能力,虽然数据湖在数据范围方面迈出了一大步,但是也面临了很多问题。数据湖中的数据更新就是一大难题。
Hive是数据湖中最常用的存储组件,但是进行更新或者删除数据操作的时候却是十分复杂,不仅对于建表有所要求,还需要构建复杂的管道来读取整个分区或表,修改数据并将其写回。这种模式效率低,并且难以维护。于是Delta Lake便产生了。Delta Lake可创建数据表,并与Hive做关联,于是便可在Hive中查询到该表,即亦可通过sparksql查询或者计算该表的数据。
数据湖的使用者并不关心数据是怎样更新的,而增量数据又必须保持其顺序性,基于此,本发明提出了一种基于NiFi更新Delta Lake的方法。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于NiFi更新DeltaLake的方法。
本发明是通过如下技术方案实现的:
一种基于NiFi更新Delta Lake的方法,其特征在于:包括以下步骤:
第一步,定义数据源
自定义数据源,将所需的文件及信息参数填备完全;
第二步,定义任务
设置执行sparkStreaming任务的yarn队列以及更新的Hive表名称、依据更新的表字段,通过定义的sparkStreaming任务即可获取连接数据源的所有参数信息;
第三步,NiFi处理器运行任务
为保证增量数据的顺序性,以kafka为消息中间件进行存储读取;NiFi处理器启动sparkStreaming程序读取kafka主题数据,并对Delta Lake存储层的数据进行更新;
Hive组件通过metastore(元数据存储)对Delta Lake存储层创建的表进行关联,从而间接实现对Hive表的更新,即可通过SparkSql进行查询计算。
所述第三步中,启动kakfa的生产者客户端存入增量数据,通过日志解析来判断每条增量数据是通过新增、修改或者删除操作得到的,并在每条增量数据中新增一个字段来保存对应的操作信息。
所述第三步中,sparkStreaming任务定时读取kafka主题数据,在sparkStreaming程序获取增量数据后,根据增量数据中自带的操作信息字段来对Delta Lake存储层对应数据进行相应操作即可。
所述第三步中,启动sparkStreaming流式计算任务,获取连接数据源的所有参数信息;NiFi处理器获取到数据源参数信息后,将其拼装成可运行的sparkStreaming命令(注意:运行的jar包已在部署时上传到spark客户端中,未让用户感知。)去读取kafka主题数据。
所述第三步中,由于sparkStreaming程序连接kafka需要指定kafka_client_jaas.conf文件(即kafka的Java客户端文件),故将sparkStreaming任务获取的数据源参数信息拼装成文件所需内容,然后将拼装内容上传到要运行sparkStreaming任务的客户端机器上,并返回路径。
所述第三步中,提交sparkStreaming任务至yarn队列并获取yarn对该任务创建的application ID(应用程序标识),存入缓存;该sparkStreaming任务采用定时单线程去kafka主题中获取增量数据(单线程是为了保证数据的顺序性,避免增量数据的紊乱),并根据增量数据操作字段信息新增、修改或者删除Dalte Lake存储层的数据。
所述第三步中,sparkStreaming任务启动新线程,创建yarnClient,每隔60s监控application ID(应用程序标识)任务的状态,当任务状态为Failed(失败)或者Killed(被杀死)时停止线程,任务结束。
所述第三步中,当需要停止NiFi处理器来修改参数时,先创建yarnClient,并拿到缓存中的application ID,通过封装的sdk方法即可kill(杀死)该任务;或者当启动的线程检测到任务状态为Killed(被杀死)时也会停止线程,从而完成NiFi处理器的停止操作。
本发明的有益效果是:该基于NiFi更新Delta Lake的方法,配置简单,将提交sparkstreaming程序与启动kafka生产者客户端合并为一个处理器,大大减少了使用者的配置复杂度,同时解决了Hive表中更新数据复杂且效率低的问题,能够满足大部分业务的增量需求,运行稳定,开发成本低,具有广泛的应用场景。
具体实施方式
为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
NiFi数据流平台是一个易用、强大、可靠的数据处理与分发系统。基于Web图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集等功能。适用于处理器有向图的可视化创建和管理。NiFi本质上是异步的,在处理和流量波动时也允许非常高的吞吐量和自然缓冲,提供高度并发的模型,开发人员不必担心并发的典型复杂性。促进内聚和松散耦合组件的开发,然后可以在其他环境中重复使用并促进可测试单元。资源受限的连接使得背压和压力释放等关键功能非常自然和直观。数据进入和退出系统以及如何流过的点很容易理解和轻松跟踪。
该基于NiFi更新Delta Lake的方法,包括以下步骤:
第一步,定义数据源
自定义数据源,将所需的文件及信息参数填备完全;
第二步,定义任务
设置执行sparkStreaming任务的yarn队列以及更新的Hive表名称、依据更新的表字段,通过定义的sparkStreaming任务即可获取连接数据源的所有参数信息;
第三步,NiFi处理器运行任务
进行增删改操作的数据一般为增量数据,当数据传输过来时,首先需要考虑的就是数据的顺序性及容错性。即每条数据的操作前后顺序不能变,并且如果更新Delta Lake失败了,可重新读取增量数据进行再次操作。基于这两方面的原因,故将KAFKA作为消息中间件来存储增量数据。
为保证增量数据的顺序性,以kafka为消息中间件进行存储读取;NiFi处理器启动sparkStreaming程序读取kafka主题数据,并对Delta Lake存储层的数据进行更新;
Hive组件通过metastore(元数据存储)对Delta Lake存储层创建的表进行关联,从而间接实现对Hive表的更新,即可通过SparkSql进行查询计算。
所述第三步中,生产消息时,将增量数据排列好并单线程写入,利用kafka的先进先出原则与落盘保存特性实现增量数据的顺序性与容错性。
所述第三步中,启动kakfa的生产者客户端存入增量数据,通过日志解析来判断每条增量数据是通过新增、修改或者删除操作得到的,并在每条增量数据中新增一个字段来保存对应的操作信息。
所述第三步中,sparkStreaming任务定时读取kafka主题数据,在sparkStreaming程序获取增量数据后,根据增量数据中自带的操作信息字段来对Delta Lake存储层对应数据进行相应操作即可。
所述第三步中,启动sparkStreaming流式计算任务,获取连接数据源的所有参数信息;NiFi处理器获取到数据源参数信息后,将其拼装成可运行的sparkStreaming命令(注意:运行的jar包已在部署时上传到spark客户端中,未让用户感知。)去读取kafka主题数据。
所述第三步中,由于sparkStreaming程序连接kafka需要指定kafka_client_jaas.conf文件(即kafka的Java客户端文件),故将sparkStreaming任务获取的数据源参数信息拼装成文件所需内容,然后将拼装内容上传到要运行sparkStreaming任务的客户端机器上,并返回路径。
所述第三步中,提交sparkStreaming任务至yarn队列并获取yarn对该任务创建的application ID(应用程序标识),存入缓存;该sparkStreaming任务采用定时单线程去kafka主题中获取增量数据(单线程是为了保证数据的顺序性,避免增量数据的紊乱),并根据增量数据操作字段信息新增、修改或者删除Dalte Lake存储层的数据。
所述第三步中,sparkStreaming任务启动新线程,创建yarnClient,每隔60s监控application ID(应用程序标识)任务的状态,当任务状态为Failed(失败)或者Killed(被杀死)时停止线程,任务结束。
所述第三步中,当需要停止NiFi处理器来修改参数时,先创建yarnClient,并拿到缓存中的application ID,通过封装的sdk方法即可kill(杀死)该任务;或者当启动的线程检测到任务状态为Killed(被杀死)时也会停止线程,从而完成NiFi处理器的停止操作。
与现有技术相比,该基于NiFi更新Delta Lake的方法,具有以下特点:
第一、提供了一种对大数据组件Delte Lake更新的设计方案,将提交sparkstreaming程序与启动kafka生产者客户端合并为一个处理器,大大减少了使用者的配置复杂度;
第二、解决了Hive表中更新数据复杂且效率低的问题;
第三、通过关联Delta Lake数据表来实现同步更新,能够满足大部分业务的增量需求;
第四、配置简单、开发成本低、具有广泛的应用场景。
以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (7)
1.一种基于NiFi更新Delta Lake的方法,其特征在于,包括以下步骤:
第一步,定义数据源
自定义数据源,将所需的文件及信息参数填备完全;
第二步,定义任务
设置执行sparkStreaming任务的yarn队列以及更新的Hive表名称、依据更新的表字段,通过定义的sparkStreaming任务获取连接数据源的所有参数信息;
第三步,NiFi处理器运行任务
以kafka为消息中间件进行存储读取,NiFi处理器启动sparkStreaming程序读取kafka主题数据,并对Delta Lake存储层的数据进行更新;
提交sparkStreaming任务至yarn队列并获取yarn对该任务创建的application ID,存入缓存;该sparkStreaming任务采用定时单线程去kafka主题中获取增量数据,并根据增量数据操作字段信息新增、修改或者删除Dalte Lake存储层的数据;
Hive组件通过metastore对Delta Lake存储层创建的表进行关联,间接实现对Hive表的更新,通过SparkSql进行查询计算。
2.根据权利要求1所述的基于NiFi更新Delta Lake的方法,其特征在于:所述第三步中,启动kakfa的生产者客户端存入增量数据,通过日志解析来判断每条增量数据是通过新增、修改或者删除操作得到的,并在每条增量数据中新增一个字段来保存对应的操作信息。
3.根据权利要求2所述的基于NiFi更新Delta Lake的方法,其特征在于:所述第三步中,sparkStreaming任务定时读取kafka主题数据,在sparkStreaming程序获取增量数据后,根据增量数据中自带的操作信息字段来对Delta Lake存储层对应数据进行相应操作。
4.根据权利要求3所述的基于NiFi更新Delta Lake的方法,其特征在于:所述第三步中,启动sparkStreaming流式计算任务,获取连接数据源的所有参数信息;NiFi处理器获取到数据源参数信息后,将其拼装成可运行的sparkStreaming命令去读取kafka主题数据。
5.根据权利要求4所述的基于NiFi更新Delta Lake的方法,其特征在于:所述第三步中,将sparkStreaming任务获取的数据源参数信息拼装成文件所需内容,然后将拼装内容上传到要运行sparkStreaming任务的客户端机器上,并返回路径。
6.根据权利要求1所述的基于NiFi更新Delta Lake的方法,其特征在于:所述第三步中,sparkStreaming任务启动新线程,创建yarnClient,每隔60s监控application ID任务的状态,当任务状态为Failed或者Killed时停止线程,任务结束。
7.根据权利要求6所述的基于NiFi更新Delta Lake的方法,其特征在于:所述第三步中,当需要停止NiFi处理器来修改参数时,先创建yarnClient,并拿到缓存中的application ID,通过封装的sdk方法kill该任务;或者当启动的线程检测到任务状态为Killed时停止线程,完成NiFi处理器的停止操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110107924.1A CN112800073B (zh) | 2021-01-27 | 2021-01-27 | 一种基于NiFi更新Delta Lake的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110107924.1A CN112800073B (zh) | 2021-01-27 | 2021-01-27 | 一种基于NiFi更新Delta Lake的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112800073A CN112800073A (zh) | 2021-05-14 |
CN112800073B true CN112800073B (zh) | 2023-03-28 |
Family
ID=75811963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110107924.1A Active CN112800073B (zh) | 2021-01-27 | 2021-01-27 | 一种基于NiFi更新Delta Lake的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112800073B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN106502772A (zh) * | 2016-10-09 | 2017-03-15 | 国网浙江省电力公司信息通信分公司 | 基于分布式离线技术的电量数据批量高速处理方法及系统 |
CN108667929A (zh) * | 2018-05-08 | 2018-10-16 | 浪潮软件集团有限公司 | 一种基于HBase协处理器同步数据到elasticsearch的方法 |
WO2019105420A1 (zh) * | 2017-11-30 | 2019-06-06 | 新华三大数据技术有限公司 | 数据查询 |
CN110196858A (zh) * | 2019-06-05 | 2019-09-03 | 浪潮软件集团有限公司 | 一种基于Hive Mutation API进行数据更新的方法 |
CN110647535A (zh) * | 2019-09-23 | 2020-01-03 | 浪潮软件集团有限公司 | 一种将业务数据更新至Hive的方法、终端及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8463818B2 (en) * | 2011-10-31 | 2013-06-11 | International Business Machines Corporation | Single command data warehouse table update |
CN106776855B (zh) * | 2016-11-29 | 2020-03-13 | 上海轻维软件有限公司 | 基于Spark Streaming读取Kafka数据的处理方法 |
CN108256115B (zh) * | 2017-09-05 | 2022-02-25 | 国家计算机网络与信息安全管理中心 | 一种面向SparkSql的HDFS小文件实时合并实现方法 |
CN110618860A (zh) * | 2019-09-09 | 2019-12-27 | 中盈优创资讯科技有限公司 | 基于Spark的Kafka消费并发处理方法及装置 |
CN110781183B (zh) * | 2019-09-10 | 2023-06-27 | 中国平安财产保险股份有限公司 | Hive数据库中增量数据的处理方法、装置以及计算机设备 |
CN110674154B (zh) * | 2019-09-26 | 2023-04-07 | 浪潮软件股份有限公司 | 一种基于Spark的对Hive中数据进行插入、更新和删除的方法 |
CN110727684B (zh) * | 2019-10-08 | 2023-07-25 | 浪潮软件股份有限公司 | 一种用于大数据统计分析的增量数据同步的方法 |
CN111078709A (zh) * | 2019-12-28 | 2020-04-28 | 辽宁振兴银行股份有限公司 | 一种基于数仓工具hive的非更新方式的增量拉链实现方法 |
CN111858632B (zh) * | 2020-07-22 | 2024-02-20 | 浪潮云信息技术股份公司 | 一种基于NiFi的关系型数据库增量数据的入库方法 |
CN111723160B (zh) * | 2020-08-24 | 2021-03-23 | 国网浙江省电力有限公司 | 一种多源异构增量数据同步方法及系统 |
-
2021
- 2021-01-27 CN CN202110107924.1A patent/CN112800073B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN106502772A (zh) * | 2016-10-09 | 2017-03-15 | 国网浙江省电力公司信息通信分公司 | 基于分布式离线技术的电量数据批量高速处理方法及系统 |
WO2019105420A1 (zh) * | 2017-11-30 | 2019-06-06 | 新华三大数据技术有限公司 | 数据查询 |
CN108667929A (zh) * | 2018-05-08 | 2018-10-16 | 浪潮软件集团有限公司 | 一种基于HBase协处理器同步数据到elasticsearch的方法 |
CN110196858A (zh) * | 2019-06-05 | 2019-09-03 | 浪潮软件集团有限公司 | 一种基于Hive Mutation API进行数据更新的方法 |
CN110647535A (zh) * | 2019-09-23 | 2020-01-03 | 浪潮软件集团有限公司 | 一种将业务数据更新至Hive的方法、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112800073A (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9740594B2 (en) | Automated debug trace specification | |
JP5140067B2 (ja) | ワークフローにおいて継続をモデル化するフレームワーク | |
US10877871B2 (en) | Reproduction of testing scenarios in a continuous integration environment | |
CN105022656B (zh) | 虚拟机快照管理方法和装置 | |
CN104517181B (zh) | 一种核电站企业内容管理系统及方法 | |
CN112379884B (zh) | 基于Spark和并行内存计算的流程引擎实现方法及系统 | |
CA3203793C (en) | System and method for real-time, dynamic creation, delivery, and use of customizable web applications | |
CN114064213A (zh) | 基于Kubernets容器环境的快速编排服务方法及系统 | |
CN111104258A (zh) | MongoDB数据库的备份方法、装置及电子设备 | |
WO2016168216A1 (en) | Checkpointing higher order query operators | |
CN112800073B (zh) | 一种基于NiFi更新Delta Lake的方法 | |
CA2600504C (en) | Container-level transaction management system and method therefor | |
CN116302852A (zh) | 一种信息系统调用链分析及结果图形化展示方法 | |
CN111026764B (zh) | 一种数据存储方法、装置、电子产品及存储介质 | |
CN114490881A (zh) | 同步数据处理方法、装置、设备及存储介质 | |
CN111399931B (zh) | 一种LayaAir引擎导出UI资源的方法及终端 | |
CN112860345A (zh) | 插件管理方法及装置 | |
Lam | Using remote cache service for Bazel | |
CN117519691B (zh) | 应用程序处理方法、装置、计算机设备和存储介质 | |
Luu et al. | Advanced Spark Streaming | |
CN102662669A (zh) | 一种开发安防类嵌入式设备应用软件系统的方法 | |
Luu et al. | Spark Streaming | |
Lam | Using Remote Cache Service for Bazel: Save time by sharing and reusing build and test output | |
Veen et al. | Virtual Threads | |
CN113934422A (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 |