mysql odbc数据源配置

爱奇艺视频生产实时数仓:解决海量数据的即时查询与报表生成挑战
众所周知,爱奇艺拥有海量的视频内容,在视频生产过程中,涉及到大量的实时数据处理和存储。为了满足快速查询和报表生成的需求,爱奇艺视频生产团队面临着巨大的挑战。
具体来说,有几个关键问题需要解决:
为了满足实时性的要求,需要寻找一种能够支持高并发实时查询的解决方案。生产数据更新频繁,要求OLAP能够支持更新操作。针对大量的数据表进行Join操作也是一个重要的挑战。码流属性(如亿级码流数据和节目属性)经常需要一起进行分析。
爱奇艺视频生产数据的特点在于其来源于OLTP数据平台,数据持久化在MongoDB中,消息变动则写入Kafka。这种结构化的数据为开发提供了灵活性和可能性。
针对以上问题,爱奇艺视频生产团队进行了深入研究并应用了一系列解决方案。特别是在ClickHouse的应用上取得了显著的成果。他们利用Spark和Spark Streaming计算引擎处理业务数据,将HBase作为维表数据存储,进行实时Join操作,并最终将数据写入ClickHouse,实现了即席查询的功能。
该方案的建设成果显著,原本报表开发周期从原来的天级缩短到了小时级,满足了频繁更新的实时和离线可Join的报表需求。
一、背景及发展历史
选择Spark+ClickHouse的实时数仓建设方案是基于爱奇艺视频生产的历史发展阶段及数据特点。随着大数据技术的不断发展,爱奇艺视频生产的数据业务经历了两个阶段。早期主要基于BabelX离线数据同步工具和Hive技术来进行报表开发。但随着生产数据的增多和实时性要求的提高,团队引进了ClickHouse进行实表开发。
二、针对大数据的处理和存储
在新的架构体系中,结合Spark/Spark Streaming与ClickHouse的特性,形成了明显的优势。ClickHouse支持更新且速度极快,而Spark Streaming的微批处理模式更适合写入ClickHouse。
具体建设过程包括离线数据加工和实时数据加工两部分。离线数据通过Spark计算引擎从MongoDB导入Hive,再经过ETL处理导入ClickHouse。实时数据则通过Spark计算引擎直接处理Kafka中的消息并写入ClickHouse。
对于Join需求,团队选择了HBase作为纬度表,在Spark计算引擎中进行合并处理并写入事实表。
三、ClickHouse支持频繁更新
针对频繁更新的需求,ClickHouse提供了ReplacingMergeTree和VersionedCollapsingMergeTree两种引擎来支持。前者会删除相同的重复项但不保证没有重复数据的出现;后者在数据块合并算法中添加了折叠行逻辑。
针对离线数据和实时数据,团队提出了多种同步方案,根据实际需求选择合适的引擎和方案。
四、数据准确性保证
为了保证数据的准确性,团队在离线重跑数据时采取了相应的措施,如Drop重区和Truncate表等。在实时数据方面,通过控制Spark消费Kafka的offset以及ClickHouse的Merge操作来保证数据的准确性。
五、配置化开发
面对大量的报表需求,团队通过配置化开发提高了效率。主要使用了程序参数解析器Apache Commons CLI来快速构建启动命令并命令的参数。
六、价值与规划
目前的建设方案完成后,基本实现了代码0开发,报表开发周期大大缩短,满足了实时、离线的Join需求。未来,团队将在爱奇艺视频生产平台提供页面化操作,打通Hive、HBase、ClickHouse等系统,并通过技术创新推动新的业务场景落地。关注公众号获取更多技术文章和工具下载信息。
