在 Kylin 中实现异常值检测 UD(A)F

2023-10-26

本文讲解了时间序列数据异常值检测的基本概念和在 Kylin 中开发使用异常值检测 UDF 的方法,可以作为其他 UDF 开发的参考。

通过在 Kylin 中移植 Hivemall 的 UDF,我们可以充分利用 Kylin 的优势,减少直接使用 Hivemall 过程中的数据加工、存储等繁杂步骤的工作量,提升用户的查询体验。本文使用的验证环境为 Kylin 2.6.3。

时间序列数据的异常值检测

时间序列数据是聚合数据中的一种重要类别,数据分析人员经常需要使用各种方法从不同角度对聚合得到的时间序列数据进行挖掘,异常值检测(Anomaly Detection)就是其中的一种常见方法。异常值检测的主要目标是从时间序列数据中区分出与预期的正常值不符的值[1],如离群值(outlier)和突变点(change-point)等,这些值往往具有比较高的关注价值,是分析人员在进行业务分析时需要重点关注的对象。

时间序列数据的异常值检测具有广泛的应用场景,例如:应用在一般的商业领域中,有助于定位生产销售中的异常波动;应用在运维中,有助于迅速发现故障;应用在医学上,有助于医生做出诊断,等等。

Hivemall 的异常值检测函数

使用传统方法在大数据集上进行异常值检测存在效率低、不够灵活等问题,因此就有人尝试引入 Hive,通过对 Hive 进行扩展来解决这些问题。例如,Apache 孵化项目 Hivemall (http://hivemall.incubator.apache.org)为  Hive 提供了大量的数据分析 UDF(User-defined Function,用户定义函数)作为扩展,其中就包括一个用于进行异常值检测的函数 changefinder。changefinder 函数实现了 ChangeFinder 算法[2],提供一维和二维数据浮点数据的离群值和突变点检测功能。

Hivemall 在官网中提供了一个使用示例数据(https://github.com/apache/incubator-hivemall/blob/master/core/src/test/resources/hivemall/anomaly/twitter.csv.gz?raw=true,这是一组来自 Twitter 的时间序列数据)进行异常值检测的例子,例子中的查询语句和查询结果片段如下:

SELECT
  num,
  changefinder(value, "-outlier_threshold 0.03 -changepoint_threshold 0.0035") AS result
FROM
  timeseries
ORDER BY num ASC
;

num

result

...

...

16

{"outlier_score":0.051287243859365894,"changepoint_score":0.003292139657059704,"is_outlier":true,"is_changepoint":false}

17

{"outlier_score":0.03994335565212781,"changepoint_score":0.003484242549446824,"is_outlier":true,"is_changepoint":false}

18

{"outlier_score":0.9153515196592132,"changepoint_score":0.0036439645550477373,"is_outlier":true,"is_changepoint":true}

19

{"outlier_score":0.03940593403992665,"changepoint_score":0.0035825157392152134,"is_outlier":true,"is_changepoint":true}

20

{"outlier_score":0.27172093630215555,"changepoint_score":0.003542822324886785,"is_outlier":true,"is_changepoint":true}

21

{"outlier_score":0.006784031454620809,"changepoint_score":0.0035029441620275975,"is_outlier":false,"is_changepoint":true}

22

{"outlier_score":0.011838969816513334,"changepoint_score":0.003519599336202336,"is_outlier":false,"is_changepoint":true}

23

{"outlier_score":0.09609857927656007,"changepoint_score":0.003478729798944702,"is_outlier":true,"is_changepoint":false}

24

{"outlier_score":0.23927000145081978,"changepoint_score":0.0034338476757061237,"is_outlier":true,"is_changepoint":false}

25

{"outlier_score":0.04645945042821564,"changepoint_score":0.0034052091926036914,"is_outlier":true,"is_changepoint":false}

...

...

在 Kylin 中使用 UDF

Apache Kylin 是一个基于 Hadoop 平台的 OLAP 引擎,它采用预计算的理念,预先对查询中可能使用到的表和维度进行关联、聚合,使得后续的查询可以直接使用预计算的结果。预计算结果被存储下来 ,通过消耗存储空间换取更快速的查询响应,即所谓的空间换时间。Hivemall 基于 Hive 大幅提升了在大数据集上进行异常值检测的效率和灵活性,但在分析聚合数据的场景下,以其查询效率仍然无法实现实时交互式分析,因此可以考虑通过引入 Kylin 来解决这个问题。

与 Hive 等类似,Kylin 也支持 UDF,允许用户对查询中需要使用的函数进行一定的扩展,下面我们就尝试通过创建 UDF 的方式,在 Kylin 中引入 Hivemall 的一维 changefinder 函数。

创建 Kylin 的 UDF 主要有两个步骤:

  1. 创建一个包含 UDF 相关方法的类,具体需要哪些方法将在后文详细介绍。

  2. 修改 Kylin 目录下的 conf/kylin.properties 配置文件,添加一行 kylin.query.udf.{UDF名称}={UDF类名},保存并重启 Kylin 后就可以使用定义好的 UDF 了。

Hivamall 中的 ChangeFinder 算法

在动手之前,我们先简要考察一下 ChangeFinder 算法的原理和它在 Hivemall 中的实现。ChangeFinder 是一种基于自回归模型的算法,包括分别检测离群值和突变点的两大阶段,每个阶段又可以细分为更新自回归模型和计算异常分值两个步骤。这其中两个阶段的计算过程是几乎相同的,输出分别是离群分值和突变分值,主要区别在于输入不同,突变点检测阶段以离群值检测阶段的输出作为输入。

ChangeFinder 算法定义了时间序列上的自回归模型,并设计了用于估计模型参数的算法,称为 Sequentially Discounting AR Model Learning 算法,简称 SDAR 算法。SDAR 算法有两个参数,分别是模型的阶数和衰减系数,序列数据保存在长度为的 RingBuffer 中,经 SDAR 算法计算就可以得到该序列对应自回归模型的参数,这部分在一维数据上的实现在 hivemall.anomaly.SDAR1D 类中。

有了这些参数,就可以使用模型的概率密度函数进行分值的计算,Hivemall 中提供了海林格距离和对数两种计算方式,其中默认使用的是海林格距离。此外,ChangeFinder 算法在突变点检测阶段的开始和结束时会分别对输入的离群分值和输出的突变分值进行窗口平滑,这就需要额外的两个输入参数,即窗口大小T1T2

static double evalScoreY(DoubleRingBuffer xRing,
                         SDAR1D sdar1,
                         DoubleRingBuffer yRing,
                         SDAR1D sdar2,
                         DoubleRingBuffer outlierScores, DoubleRingBuffer changepointScores,
                         double x, int k) {
    //计算离群分值
    double scoreX = evalScoreX(xRing, sdar1, x, k);
    //第一次平滑
    double y = smoothing(outlierScores.add(scoreX));

    //计算突变分值
    double[] ySeries = new double[k + 1];
    yRing.add(y).toArray(ySeries, false);
    int k2 = yRing.size() - 1;
    double y_hat = sdar2.update(ySeries, k2);

    double lossY = (k2 == 0D) ? 0D : hellingerLoss(sdar2);
    //第二次平滑
    double scoreY = smoothing(changepointScores.add(lossY));

    return scoreY;
}

UDF 开发过程中的主要问题

了解了上面这些信息,就可以开始动手移植了,动手过程中需要解决几个问题:

首先是 UDF 的类型问题。Kylin 的 SQL 支持来自另一个 Apache 开源项目 Calcite(http://calcite.apache.org),Calcite支持的 UDF 除最基本的单行映射的函数外,还有聚合函数和窗口聚合函数两种,即 UDAF 和 Window UDAF。

不同类型的 UDF,其类定义和在 SQL 中的使用方法也不尽相同,聚合函数将整列数据聚合成一个,如 count、sum 等,窗口聚合函数则是与 over 子句一起使用的聚合函数。从上面考察的 changefinder 算法的原理来看,这里我们应该选择窗口聚合函数,这样就需要在类中定义 5 个方法:init、add、merge、remove result (http://calcite.apache.org/docs/adapter.html,Extensibility 小节),并定义一个类,用于储存异常分值计算的中间结果。

其次,要解决函数拆分的问题。Hivemall 中的 changefinder 函数将离群值和突变点的检测放在了一起,以 json 的形式输出计算结果,我们可以将它拆分成两个 UDF,即定义两个类 OutlierWindowUDF 和 ChangePointWindowUDF,分别用于计算离群分值和突变分值,以方便进一步的分析。以 changepoint 函数为例,拆分后的主要计算过程如下:

static double evalScoreY(DoubleRingBuffer xRing,
                         SDAR1D sdar1,
                         DoubleRingBuffer yRing,
                         SDAR1D sdar2,
                         DoubleRingBuffer outlierScores, DoubleRingBuffer changepointScores,
                         double x, int k) {
    //计算离群分值
    double scoreX = evalScoreX(xRing, sdar1, x, k);
    //第一次平滑
    double y = smoothing(outlierScores.add(scoreX));

    //计算突变分值
    double[] ySeries = new double[k + 1];
    yRing.add(y).toArray(ySeries, false);
    int k2 = yRing.size() - 1;
    double y_hat = sdar2.update(ySeries, k2);

    double lossY = (k2 == 0D) ? 0D : hellingerLoss(sdar2);
    //第二次平滑
    double scoreY = smoothing(changepointScores.add(lossY));

    return scoreY;

接下来要解决数据结构初始化的问题。Hive 允许 UDF 在进行计算之前使用传入的参数进行初始化,但 Calcite 的 UDF 并不支持带参数的初始化,因此需要在计算第一行时使用、等参数进行初始化,OutlierWindowUDF 需要初始化 1 个 DoubleRingBuffer 变量和 1 个 SDAR1D 变量,而 ChangePointWindowUDF 需要初始化 4 个 DoubleRingBuffer 变量和 2 个 SDAR1D 变量。Calcite 聚合函数类型的 UDF 需要使用一个用户定义的类作为 Accumulator,因此我们可以定义一个内部类,用于存储计算过程中所需的各种变量,以 outlier 函数为例:

class OutlierWindowStatus {
    DoubleRingBuffer xRing;
    SDAR1D sdar1;
    double result;
    boolean initialized;

    OutlierWindowStatus() {
        xRing = null;
        sdar1 = null;
        result = 0D;
        initialized = false;
    }

    void initialize(int k, double r) {
        xRing = new DoubleRingBuffer(k + 1);
        sdar1 = new SDAR1D(r, k);
        initialized = true;
    }    
    void setResult(double result) {
        this.result = result;
    }
}

public OutlierWindowStatus init() {
    return new OutlierWindowStatus();
}

public OutlierWindowStatus add(OutlierWindowStatus ows, BigDecimal x, int k, BigDecimal r1) {
    if (!ows.initialized) {
        ows.initialize(k, r1.doubleValue());
    }
    ows.setResult(evalScoreX(ows.xRing, ows.sdar1, x.doubleValue(), k));
    return ows;
}

public OutlierWindowStatus merge(OutlierWindowStatus ows1, OutlierWindowStatus ows2) {
    return ows1;
}

public OutlierWindowStatus remove(OutlierWindowStatus ows, double x) {
    return ows;
}

public double result(OutlierWindowStatus ows) {
    return ows.result;
}

还要注意的是,由于 Calcite 会把窗口聚合函数输入的非整数作为 BigDecimal 类型来处理,这里也应该把相应的参数定义为 BigDecimal 类型。

最后,使用 maven 的 shade 插件进行打包,并排除其中的 SF、DSA、RSA 等签名文件,就得到了可以放入 Kylin 的 lib 目录的 jar 文件,在 kylin.properties 文件中加入以下两行并重启 Kylin,就可以使用 UDF 了:

kylin.query.udf.outlier_window=org.apache.kylin.query.udf.OutlierWindowUDF
kylin.query.udf.changepoint_window=org.apache.kylin.query.udf.ChangePointWindowUDF

我们可以将 Hivemall 提供的示例数据导入到 Hive 中,使用 Kylin 建立 Cube 并进行简单的查询验证,以 outlier 函数为例:

如上图,我们使用一条简单的 SQL 语句验证 outlier 函数,返回的结果就是在示例数据上计算得到的离群分值。为了使结果更加直观一些,可以将查询结果导出,从中截取一个 100 行的片段绘图,在图中加入一条表示阈值的虚线:

图中的横轴表示数据的行号,纵轴表示数据的离群分值,取阈值为 0.03,可以看到,函数成功检测出了这 100 条数据中的 3 个比较明显的离群值。

作者介绍:郑嵘,Kyligence 研发工程师,主要负责 Kyligence MDX 研发。

参考文献 

[1] Chandola, Varun, Arindam Banerjee, and Vipin Kumar. Anomaly detection: A survey. ACM computing surveys (CSUR) 41.3 (2009): 15.

[2] K. Yamanishi and J. Takeuchi. A Unifying Framework for Detecting Outliers and Change Points from Non-Stationary Time Series Data. KDD 2002.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Kylin 中实现异常值检测 UD(A)F 的相关文章

  • electron在Windows、Linux和KYLIN操作系统下的不同表现

    一 electron简介 Electron 是一个由 Github 开发 用 HTML xff0c CSS 和 JavaScript 来构建跨平台桌面应用程序的框架 xff0c 然后这些应用程序可以打包在macOS Windows和Linu
  • ubuntu kylin 14.04 中文切换到英文

    1 修改 etc default locale文件 LANG 61 34 en US UTF 8 34 LANGUAGE 61 34 en US en 34 2 修改 etc environment文件 LANG 61 34 en US U
  • Kylin接入外部Jdbc Mysql数据源

    前言 Kylin目前不仅仅支持Hive作为数据源构建cube xff0c 也可以支持使用外部jdbc作为数据源进行构建 xff0c 比如使用MySQL数据源的时候会让我们下载sqoop安装包 xff0c 本质上是使用sqoop全量同步我们要
  • ubuntu kylin下宽带拨号

    用pppoeconf这个命令 xff0c 一般来说 xff0c 里面已经安装好了的 按照提示过程处理即可 xff0c 要提供adsl用户名和密码 一般很多用户会配置成开机自动启动adsl xff0c 也可以手动 xff1a pon dsl
  • 《KyLin学习理解》-01-KyLin麒麟的简介及其思想

    1 美图 1 诞生背景 HIVE是数据仓库 是把存储在HDFS分布式文件系统的存储文件映射到类似于关系型数据库的东西 举个例子 假设有一个文件存储在本地 opt hzjs lcc work pro txt文件 文件的格式为 1 产品120
  • 在 Kylin 中实现异常值检测 UD(A)F

    本文讲解了时间序列数据异常值检测的基本概念和在 Kylin 中开发使用异常值检测 UDF 的方法 可以作为其他 UDF 开发的参考 通过在 Kylin 中移植 Hivemall 的 UDF 我们可以充分利用 Kylin 的优势 减少直接使用
  • ubuntu 20.04 安装 微信,QQ等客户端,一键安装,亲测成功,最新更新,优麒麟

    之前一直使用网页版微信 但是聊天记录完全无法存留 一旦断网就会退出登录 然后每次登录都要确认 很麻烦 要是有ubuntu下的微信客户端就好了 但是并不是所有的客户端都一样好用 博主安装并实测了几个ubuntu下的微信客户端 发现基于wine
  • 2023 QEMU模拟FT2000+(armv8)运行麒麟V10并安装tensorflow2

    2023 QEMU模拟FT2000 armv8 运行麒麟V10并安装tensorflow2 资源准备 麒麟V10SP1 桌面 QEMU 4 1 0以上 qeum安装kylin python tensorflow2 10 0 资源准备 麒麟V
  • R绘图笔记

    前面介绍过一些图形的绘制 我们有时候进行GO富集分析 需要绘制富集结果 这里介绍怎么将GO BP GO MF GO CC绘制到同一图形中 library ggplot2 library RColorBrewer display brewer
  • Kylin 10 SP1(UI)磁盘自行配置lvm

    1 登录服务器 输入 lsblk 查看新磁盘名称 我以sdb为例 sdb1是我为其建立的分区 2 新建分区 fidsk dev sdb 先输入n 新建分区 然后输入p 建立分区 其余选项默认 最后一步输入w保存 3 格式化分区 mkfs x
  • Kylin Flink Cube 引擎的前世今生

    Apache Kylin 是一个开源的 分布式的分析型数据仓库 提供Hadoop Spark 之上的 SQL 查询接口及多维分析 OLAP 能力以支持超大规模数据 它能在亚秒内查询巨大的表 Kylin 的核心思想是 预计算 将数据按照指定的
  • CentOS Linux的最佳替代方案(三)_银河麒麟Kylin Linux Advanced Server V10 SP2 for X86安装教程

    文章目录 CentOS Linux的最佳替代方案 三 银河麒麟Kylin Linux Advanced Server V10 SP2 for X86安装教程 1 银河麒麟Kylin Linux Advanced Server V10简介 1
  • Kylin ext3/4 xfs手动扩容根分区

    1 环境 云平台 兼容OpenStack Queens的发行版 HOST OS Kylin Server 10 SP1 Release Build20 20210518 arm64 虚拟机镜像ISO Kylin Server V10 GFB
  • kylin随笔

    1 kylin中一个segment是hbase中的一张表 可以通过修改kylin配置来决定将hbase这张表分为几个regin 以此来提高查询的并发度 2 增量日期分区表的合并 每天一个cube构建一个segment 存入hbase一张表
  • 麒麟银河v10登录图形化页面提示创建会话失败

    麒麟银河v10登录图形化页面提示创建会话失败 麒麟银河v10我用镜像创建虚拟机之后 用图形化界面登录一直提示 创建会话失败 或者直接登录框消失 卡在一个蓝色麒麟背景不动 但使用命令行或者ssh远程都可以登录 针对这个情况我做了诸多调整 1
  • 中间件运维分析中的选型与实践

    在近期的 Kylin Data Summit 上 好买财富平台架构总监王晔倞在互联网专场上分享了好买财富在中间件运维分析平台的演进过程 好买财富为什么选择从广泛应用的 ELK 转向 Apache Kylin 呢 王晔倞 我们在监控上 通常会
  • Kylin 最佳实践|爱奇艺如何处理千亿级数据

    1 使用 Kylin 的缘由 爱奇艺 OLAP 服务演变 爱奇艺大数据 OLAP 服务演变的过程可以用如下架构图说明 数据处理流程分为如下几个层级 最下方是采集平台 收集业务的埋点和日志 数据按时效性分为两种类型 离线类型的灌入到 HDFS
  • 01_配置yum源-银河麒麟V10(Kylin Linux Advanced Server V10 (Tercel))操作系统

    本文章收录于 国产银河服务器安装文档集 将详细的讲解 国产银河服务器操作系统各种软件的部署与说明 目录 配置yum源的两种方式 一 配置外网 yum 源 1 查看yum源 2 备份yum源 3 配置外网yum源 4 查看yum源 5 使yu
  • Kylin 大数据下的OLAP解决方案和行业典型应用

    最近工作中应用到了 Kylin 因此调研了 Kylin的原理和行业应用 本文参考了官网和众多其他公司中 Kylin的应用案例 文末给出了出处 希望对大家有帮助 Apache Kylin的原理和技术架构 Apache Kylin 从数据仓库中
  • 12_Linux ARM架构_安装JDK8-银河麒麟V10(Kylin Linux Advanced Server V10 )操作系统

    12 Linux ARM架构 安装JDK8 银河麒麟V10 Kylin Linux Advanced Server V10 操作系统 1 官网下载aarch64架构jdk包 2 linux服务器中创建java文件夹 方便后期快速寻找 3 将

随机推荐

  • Android中为layout创建子文件夹

    在开发Android项目的时候 往往都有一大批java文件和layout文件 java文件分类比较简单 直接方法创建文件夹就行 但layout还需要多一步配置 看最后的文件结构图 实现步骤 1 创建相应的文件夹结构 需要注意的是 无论如何
  • ‘float‘ object has no attribute ‘decode‘

    错误代码 weibo df pd read csv Users dl Desktop 情感分析论文 词云图 微博文本数据 原始数据 原数据 表格 微博文本内容 csv print weibo df head 在读取csv或者excel文件时
  • Python基础—文件操作

    Python基础 文件操作 文件操作 文件是指为了重复使用或长期使用的目的 以文本或二进制形式存放于外部存储器 硬盘 U盘 光盘等 中的数据保存形式 文件是信息交换的重要途径 也是利用程序解决实际问题的重要媒介 程序对数据读取和处理都是在内
  • 单片机裸机环境下编写AT指令程序

    1 写在前面 AT指令在各种WIFI模块 2G 4G模块以及一些无线通讯模块中应用广泛 但是用过的朋友都知道 这种方式对于单片机编程来说 并不友好 本篇文章将以ESP8266 WIFI模块为例介绍在单片机裸机环境下编写AT指令程序的一种方式
  • 高精地图在无人驾驶中的应用

    转自 http 36kr com p 5060994 html 编者按 本文来自 程序员 作者 陈辰 刘少山 36氪经授权发布 高精地图是无人驾驶核心技术之一 精准的地图对无人车定位 导航与控制 以及安全至关重要 本文是 无人驾驶技术系列
  • PHP操作Redis LIST ,SET, HASH 的相关命令 (一)

    博客搬家 请访问 PHP操作Redis LIST SET HASH 的相关命令 一 PHP操作Redis KEY String 的相关命令 二 PHP操作Redis 有序集 Sorted Set 的相关命令 三
  • HttpServletRequest.getServletContext()一直提示找不到,而引出的问题

    开发j2ee项目的时候 需要用到servlet api 如果使用了maven web项目可以在pom xml中手动加入所需jar包 达到与依赖j2ee libarary同样的功能 可问题来了 1 问题描述 最近使用myeclipse10 7
  • 2023华为OD机试真题【打印机队列/排序】

    题目内容 有5台打印机打印文件 每台打印机有自己的待打印队列 因为打印的文件内容有轻重缓急之分 所以队列中的文件有1 10不同的代先级 其中数字越大优先级越高 打印机会从自己的待打印队列中选择优先级最高的文件来打印 如果存在两个优先级一样的
  • Struts框架(一)——简介

    引言 Struts 一个web应框架 概述 Struts基于MVC的一个web开源框架 也是一个表示层的框架 只能用于Web项目 内容 一 优缺点 1 优点 1 这是一个开源框架 能让开发人员更深入的了解其内部实现机制和原理 2 框架自带的
  • Spring之AOP的实现

    文章目录 什么是AOP jdk动态代理实现AOP spring实现AOP 什么是AOP AOP Aspect Oriented Programming 意为面向切面编程 我们所熟悉的是面向对象编程 OOP 将程序中所有参与模块都抽象成对象
  • vue2、3复习02-组件的生命周期,父子组件、兄弟组件、后代之间组件的数据共享,vuex,全局配置axious,使用ref引用dom元素,使用ref引用组件的方法,this.$nextTick

    1 组件的运行过程 声明周期函数 略 2 父子组件中的数据共享 父向子共享数据 子向父共享数据 父子之间双向数据同步 1 父组件向子组件共享数据 父组件通过v bind属性想子组件共享数据 子组件使用props接收数据 2 子组件向父组件共
  • 【C++】字体文件解析(FreeType)

    目录 字体文件解析 一 前言 二 基本排版概念 1 字体文件 2 字符图像和字符表 3 字符和字体指标 三 字形轮廓 四 字形指标 1 基线 笔和布局 2 排版指标和边界框 3 方位与步进 4 网格拟合的效果 5 文本宽度与边界框 五 代码
  • ipad怎么修改服务器,ipad怎么设置ipv6网络

    ipad怎么设置ipv6网络 内容精选 换一换 本文将为您介绍如何快速搭建IPv4网段或IPv6网段的VPC 以及搭建前的准备工作 IPv4 创建VPC及子网时 默认创建的网段为IPv4类型 IPv4网络无法访问Internet上的IPv6
  • 计算机组成原理实验四 微程序控制器实验报告

    我班算是几乎最后一个做实验的班级了 报告参考了一些朋友提供的数据加上一些自己的主观拙见 本人水平有限加之制作仓促难免有错误 望大家批评指正 4 1 微程序控制器实验 一 实验目的 1 掌握微程序控制器的组成原理 2 掌握微程序的编制 写入
  • 关于安装MinGw的问题

    前段时间电脑很卡 重装了系统 换了两条内存 电脑瞬间满血复活 不过重装各种东西就很麻烦了 安装个MinGW搞了我半天 所以今天记录一下怎么安装MinGW 1 哪下 MinGW w64GCC for Windows 64 32 bitshtt
  • Linux下配置java环境版本opencv

    安装gcc等编译环境 yum install gcc yum install python3 8 yum install cmake yum groupinstall Development Tools 去官方网站下载使用的压缩包4 5 0
  • nerf训练自己的数据,过程记录十分详细

    之前跑很多项目没有记录 后来再弄就不行了 这次特别记录一下 在梳理流程的同时希望给大家带来小小的帮助 我自己是在cuda11 2 windows环境下成功的 过程十分详细 有需要的朋友耐心看完 有问题可以评论区交流 首先 本文nerf是基于
  • Ubuntu 查看系统资源占用(CPU、内存、网络)

    系统监视器 CPU 内存 网络图 仅限当前桌面登录用户 gnome system monitor 查看内存占用 free h w 主要参数 b k m 分别以字节 KB MB 为单位显示内存使用情况 h 以合适的单位显示内存使用情况 最大为
  • SpringBoot+easypoi+vue导出word文档

    因为项目需求需要 临时写的有什么错误的地方望各位见谅 可以借鉴参考 easypoi依赖包
  • 在 Kylin 中实现异常值检测 UD(A)F

    本文讲解了时间序列数据异常值检测的基本概念和在 Kylin 中开发使用异常值检测 UDF 的方法 可以作为其他 UDF 开发的参考 通过在 Kylin 中移植 Hivemall 的 UDF 我们可以充分利用 Kylin 的优势 减少直接使用