欢迎来到【维修工单源码】【qt sqlite源码】【cp的源码】flinkhbase源码-皮皮网网站!!!

皮皮网

【维修工单源码】【qt sqlite源码】【cp的源码】flinkhbase源码-皮皮网 扫描左侧二维码访问本站手机端

【维修工单源码】【qt sqlite源码】【cp的源码】flinkhbase源码

2024-11-26 17:30:59 来源:{typename type="name"/} 分类:{typename type="name"/}

1.大数据方面核心技术有哪些?
2.详解flink中Look up维表的源码使用

flinkhbase源码

大数据方面核心技术有哪些?

大数据技术的体系庞大且复杂,基础的源码技术包含数据的采集、数据预处理、源码分布式存储、源码数据库、源码数据仓库、源码维修工单源码机器学习、源码并行计算、源码可视化等。源码

       1、源码数据采集与预处理:FlumeNG实时日志收集系统,源码支持在日志系统中定制各类数据发送方,源码用于收集数据;Zookeeper是源码qt sqlite源码一个分布式的,开放源码的源码分布式应用程序协调服务,提供数据同步服务。源码

       2、数据存储:Hadoop作为一个开源的框架,专为离线和大规模数据分析而设计,HDFS作为其核心的存储引擎,已被广泛用于数据存储。HBase,是一个分布式的、面向列的开源数据库,可以认为是hdfs的封装,本质是cp的源码数据存储、NoSQL数据库。

       3、数据清洗:MapReduce作为Hadoop的查询引擎,用于大规模数据集的并行计算。

       4、数据查询分析:Hive的核心工作就是把SQL语句翻译成MR程序,可以将结构化的数据映射为一张数据库表,并提供HQL(HiveSQL)查询功能。Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

       5、资源对接源码数据可视化:对接一些BI平台,将分析得到的数据进行可视化,用于指导决策服务。

详解flink中Look up维表的使用

       背景

       在流式计算领域,维表是一种常用概念,主要用于SQL的JOIN操作,以实现对流数据的补充。比如,我们的数据源stream是订单日志,日志中仅记录了订单商品的ID,缺乏其他信息。但在数据分析时,owl推理源码我们需要商品名称、价格等详细信息,这时可以通过查询维表对数据进行补充。

       维表通常存储在外部存储中,如MySQL、HBase、Redis等。本文以MySQL为例,介绍Flink中维表的使用。

       LookupableTableSource

       Flink提供LookupableTableSource接口,用于实现维表功能。通过特定的key列查询外部存储,获取相关信息,以补充stream数据。

       LookupableTableSource有三个方法

       在Flink中,实现LookupableTableSource接口的主要有四个类:JdbcTableSource、HBaseTableSource、CsvTableSource和HiveTableSource。本文以JDBC为例,讲解如何进行维表查询。

       实例讲解

       以下是一个示例,首先定义stream source,使用Flink 1.提供的datagen生成数据。

       我们模拟生成用户数据,范围在1-之间。

       datagen具体的使用方法请参考:

       聊聊Flink 1.中的随机数据生成器-DataGen connector

       然后创建一个MySQL维表信息:

       该MySQL表中样例数据如下:

       最后执行SQL查询,流表关联维表:

       结果示例如下:

       对于维表中存在的数据,已关联出来,对于维表中不存在的数据,显示为null。

       完整代码请参考:github.com/zhangjun0x...

       源码解析JdbcTableSource

       以JDBC为例,看看Flink底层是如何实现的。

       JdbcTableSource#isAsyncEnabled方法返回false,即不支持异步查询,因此进入JdbcTableSource#getLookupFunction方法。

       最终构造一个JdbcLookupFunction对象。

       JdbcLookupFunction

       接下来看看JdbcLookupFunction类,它是TableFunction的子类,具体使用可参考以下文章:

       Flink实战教程-自定义函数之TableFunction

       TableFunction的核心是eval方法,在该方法中,主要工作是使用多个keys拼接成SQL查询数据,首先查询缓存,缓存有数据则直接返回,缓存无数据则查询数据库,并将查询结果返回并放入缓存。下次查询时,直接查询缓存。

       为什么要加缓存?默认情况下不开启缓存,每次查询都会向维表发送请求,如果数据量较大,会给存储维表的系统造成压力。因此,Flink提供了LRU缓存,查询维表时,先查询缓存,缓存无数据则查询外部系统。如果某个数据查询频率较高,一直被命中,则无法获取新数据。因此,缓存需要设置超时时间,超过这个时间则强制删除该数据,查询外部系统获取新数据。

       如何开启缓存?请参考JdbcLookupFunction#open方法:

       即cacheMaxSize和cacheExpireMs需要同时设置,构造缓存对象cache来缓存数据。这两个参数对应的DDL属性为lookup.cache.max-rows和lookup.cache.ttl。

       对于具体的缓存大小和超时时间的设置,用户需要根据自身情况自行定义,在数据准确性和系统吞吐量之间进行权衡。