FLINK SQL时区问题

SQL时区问题

在Flink SQL中,时区问题是一个需要特别关注的点,因为时区的不一致可能会导致数据的不一致性。以下是对Flink SQL时区问题的详细解释和解决方案:

一、时区问题背景

  1. 时间类型与时区:
    • 在Flink SQL中,时间类型主要分为TIMESTAMP(不带时区信息的时间)和TIMESTAMP_LTZ(带时区信息的时间)。
    • TIMESTAMP类型的时间戳不带任何时区信息,默认为UTC时间(协调世界时)。
    • TIMESTAMP_LTZ类型的时间戳则带有时区信息。
  2. 时区不一致的影响:
    • 当数据源(如MySQL)的时区设置与Flink的时区设置不一致时,可能会导致读取到的时间数据与实际时间存在偏差。
    • 在进行窗口聚合、时间比较等操作时,时区的不一致可能会导致结果的不准确。

二、解决时区问题的方案

  1. 确认MySQL的时区设置:
    • 通过SQL查询获取MySQL的全局和会话时区:SELECT @@global.time_zone, @@session.time_zone;。
    • 如果需要,可以通过修改MySQL的配置文件(如my.cnf)来设置时区,然后重启MySQL使配置生效。
  2. 配置Flink的时区:
    • 在Flink的配置文件(如flink-conf.yaml)中,可以通过设置java.opts参数来指定JVM的时区,例如:java.opts: “-Duser.timezone=Asia/Shanghai”。
    • 在Flink SQL中,可以在创建表时通过连接参数指定时区,例如:
CREATE TABLE your_table (  id INT,  created_time TIMESTAMP(3)  
) WITH (  'connector' = 'jdbc',  'url' = 'jdbc:mysql://hostname:3306/database',  'username' = 'username',  'password' = 'password',  'driver' = 'com.mysql.cj.jdbc.Driver',  'timezone' = 'Asia/Shanghai'  -- 设置连接时区  
);
  1. 使用带时区的时间类型:
    • 在Flink SQL中,尽量使用TIMESTAMP_LTZ类型的时间戳,以避免时区不一致带来的问题。
    • 可以通过配置参数table.local-time-zone来设置Flink任务的时区,这样可以将不带时区信息的时间戳转换为带时区信息的字符串。
  2. 注意数据源的时区设置:
    • 确保数据源(如MySQL、Kafka等)的时区设置与Flink的时区设置一致,或者在读取数据时进行相应的时区转换。
  3. 验证时区配置:
    • 通过执行SQL查询来验证时区配置是否成功,例如:检查数据的时间戳是否与预期一致。

SQL时间类型

在Flink SQL中,时间类型是一个重要的概念,它涉及到数据的处理、窗口的划分以及时间的转换等多个方面。以下是Flink SQL中常见的时间类型及其相关说明:

一、基本时间类型

  1. TIMESTAMP:不带时区信息的时间戳。它表示的是一个具体的时间点,但不包含该时间点所对应的时区信息。这种类型的时间戳通常用于那些对时区要求不高的场景,或者在处理数据时已经明确知道了时区信息,不需要在数据层面进行额外的时区转换。
  2. TIMESTAMP_LTZ(TIMESTAMP WITH LOCAL TIME ZONE):带时区信息的时间戳。与TIMESTAMP不同,TIMESTAMP_LTZ在表示时间点的同时,还包含了该时间点所对应的时区信息。这种类型的时间戳在处理跨时区的数据时非常有用,因为它可以确保数据在不同时区之间转换时保持一致性。

二、时间属性的概念

在Flink SQL中,除了基本的时间类型外,还有与时间属性相关的概念,这些概念对于理解Flink SQL中的时间处理至关重要:

  1. Event Time:事件产生的时间,它通常由事件中的时间戳来描述。在Flink中,Event Time是业务上最关心的时间,因为它代表了数据的实际发生时间。
  2. Ingestion Time:数据进入Flink系统的时间。这个时间通常用于那些对数据的实时性要求不高的场景,或者在处理数据时不需要考虑数据的实际发生时间。
  3. Processing Time:数据被Flink算子处理的时间。Processing Time是Flink系统内部的时间,它通常用于那些对时间要求不严格或者需要快速响应的场景。

三、时间属性的使用

在Flink SQL中,可以通过以下方式来使用不同的时间属性:

  1. 指定时间属性:在创建表时,可以通过CREATE TABLE语句中的WITH子句来指定时间属性。例如,可以使用rowtime属性来指定Event Time,或者使用proctime属性来指定Processing Time。
  2. 时间戳和水位线(Watermark):在使用Event Time时,通常需要指定时间戳的提取方式和水位线的生成策略。时间戳用于从事件中提取Event Time,而水位线则用于处理乱序事件,确保窗口的及时关闭。
  3. 时区设置:在处理带时区信息的时间戳时,需要确保Flink任务的时区设置与数据源的时区设置一致。可以通过配置参数table.local-time-zone来设置Flink任务的时区。

注意事项

  1. 时区一致性:在处理跨时区的数据时,需要确保数据源、Flink任务以及最终存储或展示数据的系统的时区设置一致,以避免时区不一致带来的数据问题。
  2. 时间戳精度:在指定时间戳时,需要注意时间戳的精度。不同的精度可能会导致数据在处理时存在差异。
  3. 乱序事件处理:在使用Event Time时,需要特别注意乱序事件的处理。乱序事件可能会导致窗口的延迟关闭,因此需要合理设置水位线的生成策略来确保窗口的及时关闭。

时区参数生效的SQL时间函数

在Flink中,时区参数对于SQL时间函数的结果有着直接的影响。以下是几个常见的、受时区参数影响的时间函数,以及它们的使用方式和注意事项:

一、CURRENT_TIMESTAMP 与 LOCALTIMESTAMP

  • CURRENT_TIMESTAMP:返回当前UTC(GMT+0)时间戳,时间戳单位为毫秒。这个函数返回的时间不受会话时区的影响,始终为UTC时间。
  • LOCALTIMESTAMP:返回当前系统的时间戳,时间戳包含时区信息。这个函数返回的时间受会话时区的影响,会根据当前会话的时区设置进行相应的调整。

二、CURRENT_TIME 与 LOCALTIME

  • CURRENT_TIME:返回当前UTC时区的当前时间(时分秒)。与CURRENT_TIMESTAMP类似,这个函数返回的时间也是UTC时间,不受会话时区的影响。
  • LOCALTIME:返回当前时区的当前时间(时分秒)。这个函数返回的时间受会话时区的影响,会根据当前会话的时区设置进行相应的调整。

三、带时区转换的时间函数

  • CONVERT_TZ(string1, string2, string3):将datetime string1(使用默认的ISO时间戳格式’yyyy-MM-dd HH:mm:ss’)从时区string2转换为时区string3。时区格式可以是缩写(如"PST")、全称(如"America/Los_Angeles")或自定义ID(如“GMT-08:00”)。这个函数允许用户在不同时区之间进行时间的转换。
  • FROM_UNIXTIME(numeric[, string]):以字符串格式返回数字参数的表示形式(默认为’yyyy-MM-dd HH:mm:ss’),该返回值用会话时区表示。numeric是一个内部时间戳值,表示自UTC '1970-01-01 00:00:00’以来的秒数。这个函数允许用户将Unix时间戳转换为指定时区的日期时间字符串。

四、其他受时区影响的时间函数

  • DATE_FORMAT(timestamp, string):虽然这个函数本身不直接处理时区转换,但它返回的时间字符串格式会受到时区设置的影响。因此,在使用这个函数时,需要注意当前会话的时区设置。
  • TIMESTAMPADD(interval, INT add, [TIMESTAMP | DATE] datetime_expr):这个函数用于在指定的时间间隔上添加或减去一个值。虽然它本身不直接处理时区转换,但返回的时间值会受到时区设置的影响。
  • TIMESTAMPDIFF(timeintervalunit, timepoint1, timepoint2):返回两个时间点之间的时间间隔。同样地,这个函数返回的时间间隔值会受到时区设置的影响。

注意事项

  1. 时区设置:在使用上述时间函数时,需要确保Flink任务的时区设置与数据源的时区设置一致,以避免时区不一致带来的数据问题。可以通过配置参数table.local-time-zone来设置Flink任务的时区。
  2. 时间戳精度:在指定时间戳时,需要注意时间戳的精度。不同的精度可能会导致数据在处理时存在差异。
  3. 函数选择:根据具体需求选择合适的时间函数。例如,如果需要获取当前系统的日期和时间戳,并且需要包含时区信息,则应使用LOCALTIMESTAMP函数;如果需要获取UTC时间的日期和时间戳,则应使用CURRENT_TIMESTAMP函数。

事件时间和时区应用案例

在Apache Flink中,事件时间(Event Time)和时区是两个重要的概念,它们在处理流式数据时尤其关键。以下是一个关于Flink事件时间和时区应用的案例,展示了如何在Flink中设置时区并使用事件时间进行窗口聚合。

案例背景

假设有一个实时数据流,其中包含用户的行为数据,每条数据都有一个时间戳表示事件发生的时间。目标是基于这些事件时间对用户的行为进行窗口聚合,统计每个窗口内的用户行为数量。由于数据可能来自不同的时区,需要确保在处理数据时能够正确应用时区设置。

步骤一:设置时区

在Flink中,可以通过配置参数来设置全局时区。这可以通过修改Flink配置文件(如flink-conf.yaml)或在代码中动态设置来实现。例如,可以将时区设置为“Asia/Shanghai”:

# 在flink-conf.yaml中设置  
table.local-time-zone: Asia/Shanghai

或者在代码中设置:

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();  
env.getConfig().setGlobalJobParameters(new GlobalJobParameters.Builder()  .setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"))  .build());

步骤二:定义数据源和事件时间

接下来,需要定义数据源,并指定如何从数据中提取事件时间戳。这通常通过实现TimestampAssigner接口或使用Flink提供的便捷类来完成。例如,如果数据是JSON格式的字符串,并且包含一个名为timestamp的字段,可以这样设置:

DataStream<String> inputStream = ...; // 数据源  DataStream<MyEvent> eventStream = inputStream  .map(jsonLine -> {  // 解析JSON并创建MyEvent对象  // ...  return new MyEvent(...);  })  .assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor<MyEvent>(Time.seconds(5)) {  @Override  public long extractTimestamp(MyEvent event) {  return event.getTimestamp(); // 从MyEvent对象中提取时间戳  }  });

步骤三:应用窗口聚合

现在已经设置了事件时间,接下来可以基于事件时间应用窗口聚合。例如,可以使用滚动窗口(Tumbling Window)来统计每个5秒窗口内的用户行为数量:

eventStream  .keyBy(event -> event.getUserId()) // 按用户ID分组  .window(TumblingEventTimeWindows.of(Time.seconds(5))) // 设置5秒滚动窗口  .sum("behaviorCount"); // 对行为数量进行求和

步骤四:处理时区转换(如果需要)

如果数据源中的时间戳不是基于设置的时区(例如,它们是UTC时间戳),可能需要在提取时间戳时进行时区转换。这可以通过在extractTimestamp方法中添加适当的逻辑来实现,例如将UTC时间戳转换为指定的时区时间戳。

然而,在大多数情况下,如果数据源已经包含了正确时区的时间戳,或者只需要在最终展示结果时考虑时区差异,那么就不需要在Flink处理过程中进行显式的时区转换。相反,可以在结果展示阶段(例如,在将数据写入数据库或生成报告时)进行时区转换。

处理时间和时区应用案例

在Apache Flink中,处理时间(Processing Time)和时区是两个在处理流数据时经常需要考虑的因素。以下是一个关于Flink处理时间和时区应用的案例,该案例展示了如何在Flink中基于处理时间进行窗口聚合,并考虑时区的影响。

案例背景

假设有一个实时数据流,该数据流包含来自不同地理位置的传感器数据。每条数据都有一个时间戳,但该时间戳是数据到达Flink系统的时间(即处理时间),而不是数据实际产生的时间(即事件时间)。目标是对这些数据进行窗口聚合,统计每个窗口内的传感器数据平均值,并且考虑时区的影响以确保结果的准确性。

步骤一:设置时区

在Flink中,时区可以通过配置参数来设置。这可以通过修改Flink配置文件(如flink-conf.yaml)或在代码中动态设置来实现。在这个案例中,假设系统默认时区是UTC,但希望结果以“Asia/Shanghai”时区展示。

步骤二:定义数据源

定义一个数据源,该数据源产生包含传感器值和到达时间戳的流数据。在Flink中,这通常通过实现SourceFunction接口或使用Flink提供的连接器(如Kafka连接器)来完成。

步骤三:基于处理时间的窗口聚合

由于使用的是处理时间,Flink会自动使用数据到达系统的时间作为窗口聚合的依据。可以使用滚动窗口(Tumbling Window)或滑动窗口(Sliding Window)来进行聚合。在这个案例中,使用滚动窗口。

DataStream<SensorData> sensorDataStream = ...; // 数据源  // 基于处理时间的5分钟滚动窗口进行聚合  
DataStream<SensorDataAggregate> aggregatedStream = sensorDataStream  .keyBy(sensorData -> sensorData.getSensorId()) // 按传感器ID分组  .window(TumblingProcessingTimeWindows.of(Time.minutes(5))) // 设置5分钟滚动窗口  .apply(new WindowFunction<SensorData, SensorDataAggregate, String, TimeWindow>() {  @Override  public void apply(String sensorId, TimeWindow window, Iterable<SensorData> input, Collector<SensorDataAggregate> out) {  // 计算窗口内数据的平均值  List<SensorData> dataList = new ArrayList<>(input);  double averageValue = dataList.stream()  .mapToDouble(SensorData::getValue)  .average()  .orElse(0.0);  // 创建聚合结果对象  SensorDataAggregate aggregate = new SensorDataAggregate(sensorId, window.getStart(), window.getEnd(), averageValue);  // 输出聚合结果  out.collect(aggregate);  }  });

步骤四:处理时区转换(如果需要)

在这个案例中,假设数据的时间戳已经是处理时间(即数据到达系统的时间),因此不需要进行时区转换。但是,如果需要将结果以特定时区展示,可以在输出聚合结果之前进行时区转换。

例如,可以将UTC时间转换为“Asia/Shanghai”时间:

// 假设aggregate.getWindowEnd()返回的是UTC时间戳(毫秒)  
long utcEndTime = aggregate.getWindowEnd();  
TimeZone utcZone = TimeZone.getTimeZone("UTC");  
TimeZone shanghaiZone = TimeZone.getTimeZone("Asia/Shanghai");  // 将UTC时间转换为Shanghai时间  
SimpleDateFormat utcFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
utcFormatter.setTimeZone(utcZone);  
String utcTimeString = utcFormatter.format(new Date(utcEndTime));  SimpleDateFormat shanghaiFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
shanghaiFormatter.setTimeZone(shanghaiZone);  
Date shanghaiDate = utcFormatter.parse(utcTimeString); // 注意这里可能会抛出ParseException  
String shanghaiTimeString = shanghaiFormatter.format(shanghaiDate);  // 现在可以使用shanghaiTimeString作为结果的一部分进行输出

注意:上述时区转换代码示例是为了说明如何进行时区转换,但在实际应用中,应该使用更健壮的日期时间处理库(如Java 8的java.time包)来避免潜在的解析和格式化错误。

SQL时间函数返回在流批任务中的异同

在Flink中,SQL时间函数在流批任务中的返回结果存在一些异同。这主要源于流处理和批处理在处理数据时的本质区别:流处理是实时、连续的数据处理,而批处理则是对静态、有界的数据集进行处理。

共同点

  1. 时间函数的存在:无论是流处理还是批处理,Flink都提供了一系列的时间函数,用于获取当前时间、日期或进行时间计算等。
  2. 时间类型的支持:Flink SQL支持多种时间类型,如TIME、TIMESTAMP等,这些类型在流批任务中都是通用的。

不同点

  1. 评估时机:
    • 流处理:在流模式下,时间函数通常会对每条记录进行评估,即每次处理一条数据时都会调用时间函数以获取当前时间。例如,CURRENT_TIMESTAMP函数在流模式下会返回每条记录处理时的当前时间戳。
    • 批处理:在批处理模式下,时间函数可能在查询开始时被评估一次,并对每一行使用相同的结果。这是因为批处理是对静态数据集进行操作,所以时间函数只需要在查询开始时获取一次时间值即可。然而,也有些时间函数(如CURRENT_ROW_TIMESTAMP())在批处理模式下仍然会对每个记录进行评估。
  2. 时间语义:
    • 流处理:在流处理中,时间函数通常与事件时间、处理时间或摄入时间等时间属性相关联。事件时间是指数据实际发生的时间,处理时间是指数据到达Flink系统的时间,而摄入时间则是指数据被Flink系统接收并处理的时间(通常与处理时间相近,但可能因系统延迟而略有不同)。
    • 批处理:在批处理中,由于数据集是静态的,所以时间函数通常只与处理时间相关,因为事件时间和摄入时间在批处理上下文中没有明确的意义。
  3. 时区处理:
    • 在Flink中,时间函数返回的时间值通常与系统的时区设置相关。在流处理和批处理任务中,都需要考虑时区的影响以确保结果的准确性。然而,由于流处理可能涉及跨时区的数据传输和处理,因此在处理时区转换时可能需要更加谨慎。

示例

  • 流处理:
SELECT CURRENT_TIMESTAMP, user_id, purchase_amount  
FROM OrderLog

在流处理中,CURRENT_TIMESTAMP会为每条记录返回处理该记录时的当前时间戳。

  • 批处理:
SELECT CURRENT_TIMESTAMP, SUM(purchase_amount) AS total_amount  
FROM OrderTable  
GROUP BY user_id

在批处理中,CURRENT_TIMESTAMP可能在查询开始时被评估一次,并对每一行使用相同的结果(取决于具体的Flink版本和配置)。然而,如果使用了CURRENT_ROW_TIMESTAMP()函数,则会对每个记录进行评估。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CyberRT通信介绍与基于Reader、Writer的通信实践(apollo9.0)

目录 数据通信场景 CyberRT中的通信方式 ​编辑 通信模式 话题通信 服务通信 参数通信 protobuf protobuf简介 protobuf文件编写 topic通信实验 实验环境 实验准备 代码编写 定义消息格式 发送消息 接收消息 定义编译规则 程序编译 运行程序 数据通信场景 …

fabric-sdk-go

Fabric-SDK-go 区块链网络搭建fabric-sdk代码代码结构&#xff1a;代码eg&#xff1a; 区块链网络搭建 使用fabric-sample的网络结构用容器搭建起测试网络即可。 fabric-sdk代码 代码很简易&#xff0c;主要为了了解怎么使用fabric为编程人员提供的sdk从而提供HTTP接口的情况…

浅谈华为 HarmonyOS Next

1. 万物互联时代的新机遇 随着万物互联时代的到来&#xff0c;智能应用从几十亿部手机扩展到数百亿个IoT设备&#xff0c;深刻改变了人们的生活方式。这为我们应用开发者带来了新的机遇和挑战。 机遇 : 目前正处于万物互联时代的前夕&#xff0c;正在经历手机单设备到全场景多…

技术分享:A-23OH型树脂在汽车涂装废溶剂回收中的应用

在当今汽车制造业竞争激烈的环境下&#xff0c;提高生产效率、降低成本的同时&#xff0c;满足环保要求已成为各制造商追求的核心目标。水性涂料因其环保、节能等多重优势&#xff0c;在汽车涂装领域的应用日益广泛。然而&#xff0c;随之而来的喷涂废溶剂处理问题也日益凸显。…

从 Hadoop 迁移到数据 Lakehouse 的架构师指南

从 Hadoop 到数据湖仓一体架构的演变代表了数据基础架构的重大飞跃。虽然 Hadoop 曾经以其强大的批处理能力统治着大数据领域&#xff0c;但如今的组织正在寻求更敏捷、更具成本效益和现代化的解决方案。尤其是当他们越来越多地开始实施 AI 计划时。根本没有办法让 Hadoop 为 A…

三周精通FastAPI:1 第一步入门

FastAPI是一个非常棒的python web和api框架&#xff0c;准备用三周的时间“精通它” 学习流程参考FastAPI官网的用户教程&#xff1a;教程 - 用户指南 - FastAPI 学前提示 运行代码 所有代码片段都可以复制后直接使用&#xff08;它们实际上是经过测试的 Python 文件&#x…

UG NX12.0建模入门笔记:1.0 UG NX12.0安装教程

一、如何关闭防火墙&#xff1f; 提示&#xff1a;安装软件之前&#xff0c;建议先 关闭防火墙和杀毒软件&#xff01;&#xff01;&#xff01; 文章目录 一、如何关闭防火墙&#xff1f;二、UG NX12.0安装包三、UG NX12.0安装教程1.新建文件夹2.安装JAVA环境3.安装许可证管理…

LeetCode_2235. 两整数相加_java

1、问题 2235. 两整数相加https://leetcode.cn/problems/add-two-integers/ 给你两个整数 num1 和 num2&#xff0c;返回这两个整数的和。 示例 1&#xff1a; 输入&#xff1a;num1 12, num2 5 输出&#xff1a;17 解释&#xff1a;num1 是 12&#xff0c;num2 是 5 &am…

智慧监管:EasyCVR视频汇聚智能分析平台助力有限空间作业实现全天候可视化监控

随着工业化和城市化进程的加快&#xff0c;有限空间作业&#xff08;如地下管道、储罐、隧道等&#xff09;在各类企事业单位中日益频繁。然而&#xff0c;这类作业环境复杂、危险系数高&#xff0c;对作业人员的安全管理和实时监控提出了严峻挑战。为了保障有限空间作业的安全…

021_Thermal_Transient_in_Matlab统一偏微分框架之热传导问题

Matlab求解有限元专题系列 固体热传导方程 固体热传导的方程为&#xff1a; ρ C p ( ∂ T ∂ t u t r a n s ⋅ ∇ T ) ∇ ⋅ ( q q r ) − α T d S d t Q \rho C_p \left( \frac{\partial T}{\partial t} \mathbf{u}_{\mathtt{trans}} \cdot \nabla T \right) \nab…

开发一个微信小程序要多少钱?

在当今数字化时代&#xff0c;微信小程序成为众多企业和个人拓展业务、提供服务的热门选择。那么&#xff0c;开发一个微信小程序究竟需要多少钱呢&#xff1f; 开发成本主要取决于多个因素。首先是功能需求的复杂程度。如果只是一个简单的信息展示小程序&#xff0c;功能仅限…

Hadoop集群基础搭建

目录 一.虚拟机安装 1.配置虚拟机的ip 2.配置本机的ip 3.新建虚拟机 4.克隆三台虚拟机 二.虚拟机网络配置 1.修改ip配置 2.配置主机名和主机映射 3.配置SSH免密登陆 三.安装JDK 1.tar命令解压JDK安装包 2.配置JDK的环境变量 四.安装Hadoop 1.tar命令解压Hadoop安…

快速了解kubernetes中的存储管理

目录 一 configmap 1.1 configmap的功能 1.2 configmap的使用场景 1.3 configmap创建方式 1.3.1 字面值创建 1.3.2 通过文件创建 1.3.3 通过目录创建 1.3.4 通过yaml文件创建 1.3.5 configmap的使用方式 1.3.5.1 使用configmap填充环境变量 1.3.5.2 通过数据卷使用c…

RestTemplate 学习笔记

简介 RestTemplate是一个执行HTTP请求的同步阻塞式工具类&#xff0c;它仅仅只是在 HTTP 客户端库&#xff08;例如 JDK HttpURLConnection&#xff0c;Apache HttpComponents&#xff0c;okHttp 等&#xff09;基础上&#xff0c;封装了更加简单易用的模板方法 API&#xff0c…

Renesas R7FA8D1BH (Cortex®-M85) 上光电编码器测速功能

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 硬件架构 2.1 硬件框架结构 2.2 测速功能原理介绍 2.2.1 理论描述 2.2.2 实现原理 2.2.3 系统硬件结构 3 软件实现 3.1 FSP配置项目 3.2 代码实现 3.2.1 初始化函数 3.2.2 功能函数 3.…

论文学习——基于Whisper迁移学习的阿尔兹海默症检测方法——音频特征和语义特征的结合

文章目录 引言正文——基于Whisper迁移学习的阿尔茨海默病检测方法&#xff08;使用转述文本作为提示&#xff0c;利用音频段落进行分类&#xff09;摘要1 Introduction介绍ADReSSo 数据集Whisper模型 2 Methods方法Audio Processing音频预处理Transfer Learning&#xff08;TL…

利用移动式三维扫描技术创建考古文物的彩色纹理网格【上海沪敖3D】

文章来源于蔡司工业质量解决方案&#xff0c;作者蔡司工业质量 在考古环境中&#xff0c;三维扫描技术应用广泛&#xff0c;如存档、保存、复制和分享&#xff08;包括实体和虚拟形式&#xff09;。 文中&#xff0c;通过真实的扫描案例&#xff0c;您将了解到三维光学解决方案…

WordPress任推帮网盘拉新数据统计插件

任推邦是国内一线的APP推广项目分发和流量变现平台&#xff0c;隶属聚名科技集团&#xff08;国家级高新技术企业、AAA重合同守信用企业&#xff0c;安徽百强企业&#xff09;,任推邦目前是阿里、字节、百度、迅雷、美团等品牌一级用户增长服务商&#xff0c;已入驻各类自媒体达…

如何安装MySql

一.卸载MySql 1.1安装版 进入“控制面板”&#xff0c;将有关“mysql”的一切都删除&#xff0c;再到“C:\ProgramData”中&#xff0c;将“mysql”文件夹删除。 1.2压缩版 先在cmd中停止mysql服务 net stop mysql8 再删除解压“mysql”文件夹即可 二.安装MySql 2.2安装版…

Vant 日期时间组件拓展

基于 "vant": "^4.8.3", 效果图 <template><!-- 弹出层 --><van-popupv-model:show"isPicker"position"bottom"><van-pickerref"picker":title"title"v-model"selectedValues"…