CN112579683A - 一种高效批量接入Tbase数据的方法 - Google Patents
一种高效批量接入Tbase数据的方法 Download PDFInfo
- Publication number
- CN112579683A CN112579683A CN202011598428.2A CN202011598428A CN112579683A CN 112579683 A CN112579683 A CN 112579683A CN 202011598428 A CN202011598428 A CN 202011598428A CN 112579683 A CN112579683 A CN 112579683A
- Authority
- CN
- China
- Prior art keywords
- data
- batch
- tbase
- processing
- access
- 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.)
- Withdrawn
Links
Images
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/25—Integrating or interfacing systems involving database management systems
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的目的在于克服现有技术的不足,提供一种能够快速接入大数据量Tbase数据的方法,解决当前数据入库Tbase时间长效率慢的问题。为了实现上述的目的,本发明所提供的一种高效批量接入Tbase数据的方法,适用于海量数据采集入库的场景中,通过对接入数据预处理,批量提交到Tbase中,实现Tbase数据的快速入库,方法包括:创建Tbase数据库连接环节;创建批处理对象环节,在每批次数据处理前进行批对象实例化,并进行封装,提升处理速度;行数据处理环节,对数据进行类型转换等处理,然后写入流中进行数据提交;数据进行批处理环节,按批进行数据接入。
Description
技术领域
本发明涉及数据治理中海量数据采集的技术领域,针对腾讯大数据平台(TBDS)中国产数据库数据进行批量接入的方法,尤其是指一种高效批量接入Tbase数据的方法。
背景技术
随着云计算技术和大数据时代的到来,越来越多的政府机构、企业单位开始重视数据背后隐藏的价值,并希望通过对数据价值的利用更好地服务于业务办理或决策分析。
数据采集和汇聚是重要的一环,针对大数据量和海量数据的接入直接影响到数据治理的效率,特别随着国产化进程的推进,对国产化数据库数据的采集效率是面临的主要难题,当前市面的采集工具和方法存在采集效率低的问题,不能很好的适应海量数据的采集工作,本发明针对腾讯的Tbase数据库进行适配和技术处理,已达到高效的采集和接入效率,满足实际业务的使用需求。
发明内容
本发明的目的在于克服现有技术的不足,提供一种能够快速接入大数据量Tbase数据的方法,解决当前数据入库Tbase时间长效率慢的问题。
一种高效批量接入Tbase数据的方法,适用于海量数据采集入库的场景中,通过对接入数据预处理,批量提交到Tbase中,实现Tbase数据的快速入库,方法包括:步骤1:创建数据库连接环节,创建Tbase数据库连接;步骤2:创建批处理对象环节,在每批次数据处理前进行批对象实例化,并进行封装,提升处理速度;步骤3:行数据处理环节,对数据进行类型转换等处理,然后写入流中进行数据提交。步骤4:数据进行批处理环节,按批进行数据接入。
进一步,在所述步骤1中,先通过相关连接信息创建数据库连接,只需建立一次连接,用以进行后续数据写入和提交。
进一步,在所述步骤2中,创建批处理对象,在每批次数据处理前进行批对象实例化,并进行封装,提升处理速度.
进一步,在所述步骤2包括以下步骤:
步骤A1:使用这个数据库连接实例化一个CopyManager对象。
步骤A2:根据表结构构建相应的Copy语句,并指定来源为FROM STDIN,需要指定使用CSV格式,同时指定分隔符(默认为“,”)与引用符(默认为“"”)。
步骤A3:使用A1中步骤实例化的CopyManager对象执行A2步骤的Copy语句,执行成功后将得到一个CopyIn对象。为提升性能,对CopyIn又进行了一层封装,具体实现方法是使用java.io.BufferedOutputStream做为代理类,来对CopyIn对象进行写入操作,提升写入速度。
进一步,在所述步骤3中,行数据处理环节,对数据进行类型转换等处理,然后写入流中进行数据提交。
进一步,在步骤3行数据处理环节中主要包括以下步骤:
步骤B1:将一条数据中的数据按它的数据类型转为相应的byte类型。
步骤B2:对数据用引用符与分隔符进行包装,利用CopyIn对象的writeToCopy方法写入流中。
步骤B3:数据写完后调用CopyIn对象的endCopy方法即可提交数据到库中,完成插入数据的事务。
进一步,在所述步骤4中,对数据进行批处理,按批进行数据接入。
进一步,所述步骤4包括以下步骤:
步骤C1:针对入库操作的稳定及容错性考虑,设置每批次提交的数据量,判定写入条数达到设置的参数,则提交数据。分批提交的方式,将大批数据分批进行写入和提交。
步骤C2:每一个新的批次,重新执行该方法中步骤2及以下步骤,直至所有数据提交完成。一个批次的数据提交失败,不影响全局数据提交失败,从而不会影响到整体入库效率。
与现有技术相比,本发明的优势在于:与传统的JDBC(Java数据库连接)使用Insert插入批量提交不同,是用特有的copy方式批量提交,极大的提高了入库效率。
附图说明
图1为本实施例中一种高效批量接入Tbase数据的方法示意图。
图2为本实施例中创建批处理对象环节流程示意图。
图3为本实施例中行数据处理环节流程示意图。
图4为本实施例中数据批处理环节流程示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,在本实施例中公开了一种高效批量接入Tbase数据的方法,特选一组需要从Oracle抽取大量数据至Tbase的抽取方式作为实施案例进行详细说明,以便于本领域技术人员的理解。本实施案例的接入Tbase数据的方法,通过对数据进行列数据及行数据处理后,进行批量提交。
在本实施例中,在步骤1中先通过相关连接信息创建数据库连接,只需建立一次连接,用以进行后续数据写入和提交。
如图2所示,在本实施例中,步骤2为创建批处理对象环节。
步骤A1:使用这个数据库连接实例化一个CopyManager对象。
步骤A2:根据表结构构建相应的Copy语句,并指定来源为FROM STDIN,需要指定使用CSV格式,同时指定分隔符(默认为“;”)与引用符(默认为“"”)。
COPY A (a1,a2,a3,a4) from stdin with csv delimited as ‘;’ quote as‘"’;
其中 A为测试表名 a1,a2,a3,a4均为表列名。
步骤A3:使用A1中步骤实例化的CopyManager对象执行A2步骤的Copy语句,执行成功后将得到一个CopyIn对象,此copyIn对象则写入数据时,则使用的为copy 方式。
为提升性能,对CopyIn又进行了一层封装,具体实现方法是使用java.io.BufferedOutputStream做为代理类,来对CopyIn对象进行写入操作,提升写入速度。设置缓冲的大小为1M后,写入速度有10倍以上的提升。
在初始化BufferedOutputStream 时,重写write方法 将write的实现改为copyin.writeTOCopy 这在使用BufferedOutputStream进行写入流时,则为copyin写入流,同时也要重写flush() 与close()方法,同时指定buffer size 如上所述为1M。
如图3所示,在本实施例中,步骤3为行数据处理环节,对数据进行类型转换等处理,然后写入流中进行数据提交。
步骤B1:将一条数据中的数据按它的数据类型转为相应的byte类型。
例如:存在一条数据 1 a1 2020-10-13 02:00:00 true
分别为long string timestamp boolean类型
则转为byte 分别为
[49]
[97, 49]
[50, 48, 50, 48, 45, 49, 48, 45, 49, 51, 32, 48, 50, 58, 48, 48, 58,48, 48]
[116, 114, 117, 101]
步骤B2:对上一步所得到的byte数据用引用符与分隔符进行包装,利用CopyIn对象的writeToCopy方法写入流中。
先写入[49] 在写入分隔符 ,本次copy语句中分割符为‘;’ 则转为byte为[59]
写入第一个数据后再写入byte [59] 则总的步骤为:
Write([49]);
Write([59]);
Write([97, 49]);
Write([59]);
Write([50, 48, 50, 48, 45, 49, 48, 45, 49, 51, 32, 48, 50, 58, 48,48, 58, 48, 48]);
Write([59]);
Write([116, 114, 117, 101]);
在写完一整条数据之后需要写入行分隔符,使用系统分隔符:
Write(System.getProperty( "line.separator" ).getbytes());
此时则写完一条完整数据,后续则重复此步骤。
步骤B3:数据写完后调用CopyIn对象的endCopy方法即可提交数据到库中,完成插入数据的事务。
如图4所示,在本实例实施中在为步骤4,对数据进行批量提交处理环节,处理如下。
步骤C1:设置每批次提交的数据量为5万条,进行分批写入和提交。
步骤C2:每5万条数据写入提交完成后则调用copyIn方法中的endcopy方法将数据提交,之后将会重新以5万条数据为单位,执行该方法中步骤A2及以下步骤重新构建copyIn对象进行数据提交,直至所有数据完成接入。一个批次的数据提交失败,不会导致全局数据提交失败,从而不会影响到整体入库效率。
与常见copy使用方法不同的是,常见的为直接将整个txt或者其他文件转为outputstream之后,直接通过copymanager写入至Tbase,这种与流式的数据形式相互冲突。本例中使用了CopyIn 可以将数据通过列分隔符与行分隔符将数据分批写入,再统一提交,能较好的应对流式数据。
针对5个字段的1000万条数据接入Tbase测试,总耗时150秒,速度达到6万条每秒。
综上所述,本实施例的处理办法能够有效的解决大量数据需要入库Tbase效率低,易出错的问题,节省的时间成本。
以上所述之实施例仅为本发明的较佳实施例,并非对本发明做任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,利用上述揭示的技术内容对本发明技术方案作出更多可能的变动和润饰,或修改均为本发明的等效实施例。故凡未脱离本发明技术方案的内容,依据本发明之思路所作的等同等效变化,均应涵盖于本发明的保护范围内。
Claims (8)
1.一种高效批量接入Tbase数据的方法,适用于海量数据采集入库的场景中,通过对接入数据预处理,批量提交到Tbase中,实现Tbase数据的快速入库,具体方法如下,步骤1:创建数据库连接环节,创建Tbase数据库连接;步骤2:创建批处理对象环节,在每批次数据处理前进行批对象实例化,并进行封装,提升处理速度;步骤3:行数据处理环节,对数据进行类型转换等处理,然后写入流中进行数据提交;步骤4:数据进行批处理环节,按批进行数据接入,从而达到高效接入大数据量Tbase数据的目的。
2.根据权利要求1所述一种高效批量接入Tbase数据的方法,其特征在于:在步骤1中,先通过相关连接信息创建数据库连接,只需建立一次连接,用以进行后续数据写入和提交。
3.根据权利要求书1所述所述一种高效批量接入Tbase数据的方法,其特征在于:在步骤2创建批处理对象环节,在每批次数据处理前进行批对象实例化,并进行封装,提升处理速度。
4.根据权利要求书3所述所述一种高效批量接入Tbase数据的方法,其特征在于:创建批处理对象环节包括以下步骤:
步骤A1:使用这个数据库连接实例化一个CopyManager对象;
步骤A2:根据表结构构建相应的Copy语句,并指定来源为FROM STDIN,需要指定使用CSV格式,同时指定分隔符(默认为“,”)与引用符(默认为“"”);
步骤A3:使用A1中步骤实例化的CopyManager对象执行A2步骤的Copy语句,执行成功后将得到一个CopyIn对象,为提升性能,对CopyIn又进行了一层封装,具体实现方法是使用java.io.BufferedOutputStream做为代理类,来对CopyIn对象进行写入操作,提升写入速度。
5.根据权利要求1所述一种高效批量接入Tbase数据的方法,其特征在于:在步骤3行数据处理环节,对数据进行类型转换等处理,然后写入流中进行数据提交。
6.根据权利要求5所述一种高效批量接入Tbase数据的方法,其特征在于:所述行数据处理包括以下步骤:
步骤B1:将一条数据中的数据按它的数据类型转为相应的byte类型;
步骤B2:对数据用引用符与分隔符进行包装,利用CopyIn对象的writeToCopy方法写入流中;
步骤B3:数据写完后调用CopyIn对象的endCopy方法即可提交数据到库中,完成插入数据的事务。
7.根据权利要求1所述一种高效批量接入Tbase数据的方法,其特征在于:在步骤4,数据进行批处理环节,可根据参数设定每批次处理数据量,按批进行数据接入。
8.根据权利要求7所述一种高效批量接入Tbase数据的方法,其特征在于:在数据进行批处理环节包括以下步骤:
步骤C1:针对入库操作的稳定及容错性考虑,设置每批次提交的数据量,判定写入条数达到设置的参数,则提交数据,通过分批提交的方式,将大批数据分批进行写入和提交;
步骤C2:每一个新的批次,重新执行该方法中步骤2及以下步骤,直至所有数据提交完成;一个批次的数据提交失败,不影响全局数据提交失败,从而不会影响到整体入库效率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011598428.2A CN112579683A (zh) | 2020-12-30 | 2020-12-30 | 一种高效批量接入Tbase数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011598428.2A CN112579683A (zh) | 2020-12-30 | 2020-12-30 | 一种高效批量接入Tbase数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112579683A true CN112579683A (zh) | 2021-03-30 |
Family
ID=75144162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011598428.2A Withdrawn CN112579683A (zh) | 2020-12-30 | 2020-12-30 | 一种高效批量接入Tbase数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579683A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085739B1 (en) * | 1999-10-20 | 2006-08-01 | Accenture Llp | Method and system for facilitating, coordinating and managing a competitive marketplace |
WO2014134676A1 (en) * | 2013-03-06 | 2014-09-12 | Stiktag Pty Ltd | A method and system for assigning and customising hosted network resources |
CN110895490A (zh) * | 2019-11-29 | 2020-03-20 | 深圳乐信软件技术有限公司 | 一种数据批量处理系统、方法、设备和存储介质 |
CN111694811A (zh) * | 2020-04-01 | 2020-09-22 | 新华三大数据技术有限公司 | 一种批量数据入库方法及装置 |
-
2020
- 2020-12-30 CN CN202011598428.2A patent/CN112579683A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085739B1 (en) * | 1999-10-20 | 2006-08-01 | Accenture Llp | Method and system for facilitating, coordinating and managing a competitive marketplace |
WO2014134676A1 (en) * | 2013-03-06 | 2014-09-12 | Stiktag Pty Ltd | A method and system for assigning and customising hosted network resources |
CN110895490A (zh) * | 2019-11-29 | 2020-03-20 | 深圳乐信软件技术有限公司 | 一种数据批量处理系统、方法、设备和存储介质 |
CN111694811A (zh) * | 2020-04-01 | 2020-09-22 | 新华三大数据技术有限公司 | 一种批量数据入库方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489445B (zh) | 一种基于多形态复合的海量数据快速查询方法 | |
CN106156278B (zh) | 一种数据库数据读写方法和装置 | |
CN111367886A (zh) | 数据库中数据迁移的方法及装置 | |
WO2022068316A1 (zh) | 数据对账方法、装置、设备及存储介质 | |
CN113312338A (zh) | 数据一致性的校验方法、装置、设备、介质及程序产品 | |
CN111782207A (zh) | 任务流代码生成方法、装置、设备及存储介质 | |
US8131728B2 (en) | Processing large sized relationship-specifying markup language documents | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
CN112579683A (zh) | 一种高效批量接入Tbase数据的方法 | |
EP3736693A1 (en) | High-speed scanning parser for scalable collection of statistics and use in preparing data for machine learning | |
US8321429B2 (en) | Accelerating queries using secondary semantic column enumeration | |
US9305080B2 (en) | Accelerating queries using delayed value projection of enumerated storage | |
WO2022222547A1 (zh) | 一种大批量pdf文件合并的方法及系统 | |
CN113312386B (zh) | 一种基于分布式消息的批量入库方法 | |
CN115577689A (zh) | 一种表格组件的生成方法、装置、设备及介质 | |
US11556455B2 (en) | Automated identification of posts related to software patches | |
CN103150408B (zh) | 实时数据库中根据点名找到数据库并访问的系统与方法 | |
CN107169098B (zh) | 数据搬运方法、数据搬运装置及电子设备 | |
Liao et al. | Bullion: A Column Store for Machine Learning | |
CN115203132B (zh) | 一种用于按需求快速提取op2文件架构的设计方法 | |
CN109710606B (zh) | 一种基于oracle LOB的高效压缩与读库方法 | |
CN116860509B (zh) | Pst文件的修复方法、设备及存储介质 | |
CN112416362B (zh) | 一种pdk编译功能的实现方法 | |
US20230367923A1 (en) | Framework for system simulation using multiple simulators | |
CN110162480B (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210330 |