[发明专利]一种自定义Spark数据源实现数据快速写入ClickHouse的方法和装置有效
申请号: | 202011214153.8 | 申请日: | 2020-11-04 |
公开(公告)号: | CN112364019B | 公开(公告)日: | 2022-10-04 |
发明(设计)人: | 周朝卫 | 申请(专利权)人: | 中盈优创资讯科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/27;G06F16/28 |
代理公司: | 上海嘉蓝专利代理事务所(普通合伙) 31407 | 代理人: | 卢化宇 |
地址: | 201800 上海市嘉定区安*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自定义 spark 数据源 实现 数据 快速 写入 clickhouse 方法 装置 | ||
本发明公开了一种自定义Spark数据源实现数据快速写入ClickHouse的方法和装置。本发明基于Spark的外部数据源接口,自定义Clickhouse的数据源,实现了通用的写入ClickHouse的功能,只需要调用一条语句,即可实现将Spark的数据快速写入ClickHouse,不需要开发按业务需求定制的代码,明显提高了数据写入效率,保证了数据的均衡写入。
技术领域
本发明涉及计算机技术领域,具体涉及一种自定义Spark数据源实现数据快速写入ClickHouse的方法与装置。
背景技术
Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。 Spark可以分布式读取数据,通过对数据做各种转换、加工处理等,将处理后的数据,分布式的写入目标存储。ClickHouse是一款用于大数据实时分析的列式数据库管理系统。通过向量化执行以及对CPU底层指令集(SIMD) 的使用,它可以对海量数据进行并行处理,从而加快数据的处理速度。
目前Spark将数据写入ClickHouse的表,存在两个问题,一是功能重用度低,需要为每个需求开发定制的程序,增加新的业务或业务调整均需要调整代码,随着定制的程序不断增加,维护复杂。具体的,使用Spark 读取需要写入的数据(例如文件或者其他的数据库等),需要将读入的数据转换为DataFrame。对于DataFrame的每个字段,都需要和ClickHouse 表的字段进行比对,并将DataFrame的字段的数据类型转换为ClickHouse 表兼容的数据类型。在具体写入时,需要根据每条数据的每个字段进行业务逻辑处理,例如数据类型转换。如果ClickHouse的列特别多(由于 ClickHouse是列式存储,在生产环境中,一张表有成百上千个列是非常正常的),由于需要对每个列的字段处理,因此,代码将会非常冗长,容易出错。由于不同的业务,DataFrame的字段以及schema都是有差异的,如果其他的业务也需要将数据写入ClickHouse,只能重新开发数据写入 ClickHouse的代码。如果需求发送了变更,例如,ClickHouse字段的数据类型发生变化或者ClickHouse的表新增了字段,都需要修改代码。而且 DataFrame的字段值为空时或者缺少ClickHouse表的某个字段时,数据写入将失败。
二是为保证数据导入的稳定性和性能,需要从ClickHouse本地表导入数据。但是本地表分布在集群中的各个节点上,而Spark的DataFrame是一个分布式的数据集合,因为通过分布式表写入会存在很多问题,如没有数据的一致性校验,分布式表机器宕机,数据容易丢失以及对ZooKeeper 压力大等问题。而目前没有办法将数据均衡的写入到ClickHouse的每个本地节点,即不能保证数据的均衡存储。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本发明目的是基于Spark的外部数据源接口,自定义Clickhouse的数据源,实现通用的写入ClickHouse的功能,只需要调用一条语句,即可实现将Spark的数据写入ClickHouse,且能保证数据的均衡存储在ClickHouse 的每个本地节点,不需要开发按业务需求定制的代码。
为实现上述目的,提供了如下方案:
一种自定义Spark数据源实现数据快速写入ClickHouse的方法,其步骤为:
1、通过重定义继承Spark数据源相关接口和类中用于导入数据的算法,创建一个可以均衡写入的ClickHouse数据源;
2、将上述实现的代码发布为二进制jar包,每次将数据写入ClickHouse 时引用该jar包;
3、通过将待写入的数据转换为Spark的DataFrame类型的数据集,调用特定语句完成快速写入ClickHouse的功能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中盈优创资讯科技有限公司,未经中盈优创资讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011214153.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种配电网故障定位系统及方法
- 下一篇:一种拆包系统