Kyligence AI 服务 - 让大模型完成准确、可靠的数值计算和回答! 立即了解更多

码上时刻|通过逻辑视图 Logic View 快速实现批流一体

Author
陈伟 贾航
2024年 3月 27日

近年来,随着商业环境的竞争日益激烈,企业对于实时数据服务的需求急剧增加。Kyligence 在服务众多客户的过程中,很多企业对数据平台的要求越来越高,都希望能即时获取、处理数据,以便快速响应市场变化,加快决策过程,有效推动产品和服务的不断迭代和优化。

在实际的场景中,为了满足更深层次的业务分析需求和进行更深入的数据洞察和分析,如趋势分析、实时数据与历史数据的综合汇总等复杂场景,实时数据必须与存储在数据仓库中的批处理数据相结合。在本文中,我们将简要分享 Kyligence 如何通过其创新的逻辑视图 Logic View 的功能,帮助企业构建批流一体的数据平台,从而提高数据分析的准确性,让业务决策更加精准,为企业提供强大的竞争优势。

场景介绍

优惠券是银行、零售等企业常见的促销方式,接下来我们以某银行对优惠券活动影响分析的需求为例,简单分享 Kyligence 批流一体能力如何帮助企业实现即时的数据分析与洞察,并进行精准决策与营销。

该银行的运营部门希望能够在客户使用优惠券的瞬间,就能即时分析这一行为带来的其他各项指标变化,分析维度一般包括客户标签、客户经理、消费券类型等。运营部门不仅需要访问客户消费的实时数据,还需要访问并分析历史数据,以便对比和理解不同优惠券在相应时间的表现状况。

这就要求系统不仅要支持复杂的数据处理任务,还要能够通过简单的 SQL 查询,同时分析实时数据和历史数据,而这些需求都建立在银行海量数据基础上。该银行希望用简单、可靠、用户友好的方式实现批流一体,即用同一个模型,一套 SQL 既能分析实时指标,也能分析历史数据。

方案实现

Kyligence Enterprise 是基于 Apache Kylin 核心的企业级 OLAP (多维分析)平台,为本地及云上用户提供 PB 级数据集上的亚秒级查询能力,优化数据仓库及数据湖上的多维分析能力。为了满足客户对实时数据分析的需求,Kyligence Enterprise 支持配备可视化一站式实时计算平台 Kyligence StreamOps,可连接 OLAP 和数据湖等众多框架,满足客户对批流一体、湖仓一体的需求。接下来,我们将分享在产品中如何通过简单五步实现批流一体。

1. 首先,我们通过实时计算平台 Kyligence StreamOps 将客户消息队列中数据写入 Hudi,并自动创建 Hive 映射表。

2. 部署完成 Kyligence Enterprise 后,将 Hudi SDK Jar 包放置在 $KYLIN_HOME/spark/jars 目录下,欢迎您联系 Kyligence 客户经理获取 Jar 包。

3. 在 Kyligence Enterprise 配置文件中添加以下配置

# 开启logical view
kylin.source.ddl.logical-view.enabled=true
# 配置查询的 Hudi 扩展
kylin.storage.columnar.spark-conf.spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,org.apache.spark.sql.hudi.HoodieSparkSessionExtension
kylin.storage.columnar.spark-conf.spark.sql.catalog.kylin=org.apache.spark.sql.hudi.catalog.HoodieCatalog
kylin.storage.columnar.spark-conf.spark.kryo.registrator=org.apache.spark.HoodieSparkKryoRegistrar
kylin.storage.columnar.spark-conf.spark.serializer=org.apache.spark.serializer.KryoSerializer

# 配置构建的 Hudi 扩展
kylin.engine.spark-conf.spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,org.apache.spark.sql.hudi.HoodieSparkSessionExtension
kylin.engine.spark-conf.spark.sql.catalog.kylin=org.apache.spark.sql.hudi.catalog.HoodieCatalog
kylin.engine.spark-conf.spark.kryo.registrator=org.apache.spark.HoodieSparkKryoRegistrar
kylin.engine.spark-conf.spark.serializer=org.apache.spark.serializer.KryoSerializer

# 防止 Spark 缓存表元数据导致 Hudi 新增数据查询不到
kylin.storage.columnar.spark-conf.spark.sql.filesourceTableRelationCacheSize=0

4. 在 Kyligence Enterprise 中创建逻辑视图,根据需求我们可以用 Hudi 中的实时表,通过 Union 合并 Hive 中的历史数据,从而达到批流一体的效果。

-- 创建 Hudi 表
$KYLIN_HOME/spark/bin/spark-shell \
      --conf spark.master=local \
      --conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension \
      --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog \
      --conf spark.serializer=org.apache.spark.serializer.KryoSerializer

spark.sql("create table test_hudi.hudi_table (id bigint,name string,dt date) using hudi tblproperties (type = 'cow',primaryKey = 'id') partitioned by (dt) location 'hdfs://$ip:8020/user/hive/warehouse/test_hudi.db/hudi_table'")

-- Hive 中创建同结构的表,作为批数据表
CREATE TABLE HIVE.HUDI_HIVE(  
  id bigint,   
  name string, 
  dt date);

5. 创建 Logic View,其中 TEST_HUDI.HUDI_TABLE 为 Hudi 中的实时表,HIVE.HUDI_HIVE为 Hive 中的批数据表。

CREATE LOGICAL VIEW KYLIN_LOGICAL_VIEW.HUDI_HIVE as 
select id,name,dt from TEST_HUDI.HUDI_TABLE
union all select id,name,dt from HIVE.HUDI_HIVE

完成上述五个步骤后,Kyligence Enterprise 将会在分钟级完成构建,现在产品中的模型既包含 Hive 中的历史数据,又可以实时分析 Hudi 中的实时数据。

总结与扩展

通过 Kyligence 的批流一体解决方案,该银行现在使用统一的数据模型和一套 SQL 语句,就能高效地完成实时和历史数据的综合分析。这不仅极大地简化了数据分析流程,还提高了数据分析的准确性和及时性,运营人员和营销人员能更好地评估优惠券活动的效果,为未来的营销策略提供数据支持。如果您对上述方案感兴趣,欢迎点击这里与我们取得联系

关于 Kyligence

跬智信息(Kyligence)由 Apache Kylin 创始团队于 2016 年创办,是领先的大数据分析和指标平台供应商,提供企业级 OLAP(多维分析)产品 Kyligence Enterprise 和智能一站式指标平台 Kyligence Zen,为用户提供企业级的经营分析能力、决策支持系统及各种基于数据驱动的行业解决方案。

Kyligence 已服务中国、美国、欧洲及亚太的多个银行、证券、保险、制造、零售、医疗等行业客户,包括建设银行、平安银行、浦发银行、北京银行、宁波银行、太平洋保险、中国银联、上汽、长安汽车、星巴克、安踏、李宁、阿斯利康、UBS、MetLife 等全球知名企业,并和微软、亚马逊云科技、华为、安永、德勤等达成全球合作伙伴关系。Kyligence 获得来自红点、宽带资本、顺为资本、斯道资本、Coatue、浦银国际、中金资本、歌斐资产、国方资本等机构多次投资。

添加企微

kyligence
关注我们

kyligence