Azure - 机器学习:使用 Apache Spark 进行交互式数据整理

目录

    • 本文内容
    • 先决条件
    • 使用 Apache Spark 进行交互式数据整理
      • Azure 机器学习笔记本中的无服务器 Spark 计算
      • 从 Azure Data Lake Storage (ADLS) Gen 2 导入和整理数据
      • 从 Azure Blob 存储导入和处理数据
      • 从 Azure 机器学习数据存储导入和整理数据

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文内容

数据整理已经成为机器学习项目中最重要的步骤之一。 Azure 机器学习与 Azure Synapse Analytics 集成,提供对 Apache Spark Pool(由 Azure Synapse 支持)的访问,以便使用 Azure 机器学习笔记本进行交互式数据整理。

先决条件

  • 一个 Azure 订阅;如果你没有 Azure 订阅,请在开始之前创建一个免费帐户。
  • Azure 机器学习工作区。 请参阅创建工作区资源。
  • Azure Data Lake Storage (ADLS) Gen 2 存储帐户。 请参阅创建 Azure Data Lake Storage (ADLS) Gen 2 存储帐户。
  • (可选):Azure Key Vault。 请参阅创建 Azure 密钥保管库。
  • (可选):服务主体。 请参阅创建服务主体。
  • (可选)Azure 机器学习工作区中附加的 Synapse Spark 池。

在开始数据整理任务之前,请了解存储机密的过程

  • Azure Blob 存储帐户访问密钥
  • 共享访问签名 (SAS) 令牌
  • Azure Data Lake Storage (ADLS) Gen 2 服务主体信息

在 Azure 密钥保管库中。 还需要了解如何在 Azure 存储帐户中处理角色分配。 下面的部分讨论以下概念。 然后,我们将详细了解如何使用 Azure 机器学习笔记本中的 Spark 池进行交互式数据整理。

file

使用 Apache Spark 进行交互式数据整理

Azure 机器学习在 Azure 机器学习笔记本中提供无服务器 Spark 计算和附加的 Synapse Spark 池,用于与 Apache Spark 进行交互式数据整理。 无服务器 Spark 计算不需要在 Azure Synapse 工作区中创建资源。 相反,在 Azure 机器学习笔记本中可以直接使用完全托管的无服务器 Spark 计算。 要访问 Azure 机器学习中的 Spark 群集,最简单的方法是使用无服务器 Spark 计算。

file

Azure 机器学习笔记本中的无服务器 Spark 计算

默认情况下,Azure 机器学习笔记本中提供了无服务器 Spark 计算。 若要在笔记本中访问它,请从“计算”选择菜单的“Azure 机器学习无服务器 Spark”下选择“无服务器 Spark 计算”。

笔记本 UI 还为无服务器 Spark 计算提供了 Spark 会话配置选项。 配置 Spark 会话:

  1. 选择屏幕顶部的“配置会话”。

  2. 从下拉菜单中选择“Apache Spark 版本”。

    重要

    适用于 Apache Spark 的 Azure Synapse 运行时:公告

    • 适用于 Apache Spark 3.2 的 Azure Synapse 运行时:
      • EOLA 公告日期:2023 年 7 月 8 日
      • 支持结束日期:2024 年 7 月 8 日。 在此日期之后,将会禁用运行时。
    • 为了获取持续支持和最佳性能,建议迁移到 Apache Sark 3.3。
  3. 从下拉菜单中选择“实例类型”。 当前支持以下实例类型:

    • Standard_E4s_v3
    • Standard_E8s_v3
    • Standard_E16s_v3
    • Standard_E32s_v3
    • Standard_E64s_v3
  4. 输入 Spark 会话超时值(以分钟为单位)。

  5. 选择是否动态分配执行程序

  6. 选择 Spark 会话的执行程序数量。

  7. 从下拉菜单中选择“执行程序大小”。

  8. 从下拉菜单中选择“驱动程序大小”。

  9. 要使用 Conda 文件配置 Spark 会话,请选中“上传 conda 文件”复选框。 然后,选择“浏览”,并选择具有所需 Spark 会话配置的 Conda 文件。

  10. 添加“配置设置”属性,在“属性”和“值”文本框中输入值,然后选择“添加”。

  11. 选择“应用”。

  12. 在“配置新会话?”弹出窗口中选择“停止会话”。

会话配置更改将被保存,并可用于使用无服务器 Spark 计算启动的另一个笔记本会话。

提示

如果使用会话级 Conda 包,并将配置变量 spark.hadoop.aml.enable_cache 设置为 true,则可以改善 Spark 会话冷启动时间。 会话首次启动时,具有会话级别 Conda 包的会话冷启动通常需要 10 到 15 分钟。 但是,配置变量设置为 true 时的后续会话冷启动通常需要 3 到 5 分钟。

从 Azure Data Lake Storage (ADLS) Gen 2 导入和整理数据

可以使用 abfss:// 数据 URI 按照以下两种数据访问机制之一访问和处理存储在 Azure Data Lake Storage (ADLS) Gen 2 存储帐户中的数据:

  • 用户标识传递
  • 基于服务主体的数据访问

提示

要使用无服务器 Spark 计算进行数据整理、对 Azure Data Lake Storage (ADLS) Gen 2 存储帐户中的数据进行用户标识直通访问,需要的配置步骤是最少的。

若要使用用户标识传递开始交互式数据整理,请执行以下命令:

  • 验证用户身份是否在 Azure Data Lake Storage (ADLS) Gen 2 存储帐户中获得了“参与者”和“存储 Blob 数据参与者”角色。

  • 要使用无服务器 Spark 计算,请在“计算”选择菜单中,选择“Azure 机器学习无服务器 Spark”下的“无服务器 Spark 计算”。

  • 要使用附加的 Synapse Spark 池,请从“计算”选择菜单中选择“Synapse Spark 池”下附加的 Synapse Spark 池。

  • 这个 Titanic 数据整理代码示例显示了 abfss://<FILE_SYSTEM_NAME>@<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net/<PATH_TO_DATA> 格式的数据 URI 与 pyspark.pandaspyspark.ml.feature.Imputer 的搭配使用。

    import pyspark.pandas as pd
    from pyspark.ml.feature import Imputerdf = pd.read_csv("abfss://<FILE_SYSTEM_NAME>@<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net/data/titanic.csv",index_col="PassengerId",
    )
    imputer = Imputer(inputCols=["Age"], outputCol="Age").setStrategy("mean"
    )  # Replace missing values in Age column with the mean value
    df.fillna(value={"Cabin": "None"}, inplace=True
    )  # Fill Cabin column with value "None" if missing
    df.dropna(inplace=True)  # Drop the rows which still have any missing value
    df.to_csv("abfss://<FILE_SYSTEM_NAME>@<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net/data/wrangled",index_col="PassengerId",
    )
    

    备注

    此 Python 代码示例使用 pyspark.pandas。 只有 Spark 运行时版本 3.2 或更高版本才支持此功能。

若要通过服务主体按照访问权限来整理数据,请执行以下操作:

  1. 验证服务主体是否在 Azure Data Lake Storage (ADLS) Gen 2 存储帐户中获得了“参与者”和“存储 Blob 数据参与者”角色。

  2. 为服务主体租户 ID、客户端 ID 和客户端机密值创建 Azure 密钥保管库机密。

  3. 在“计算”选择菜单中,选择“Azure 机器学习无服务器 Spark”下的“无服务器 Spark 计算”,或者从“计算”选择菜单中选择“Synapse Spark 池”下附加的 Synapse Spark 池。

  4. 若要在配置中设置服务主体租户 ID、客户端 ID 和客户端密码,请执行以下代码示例。

    • 代码中的 get_secret() 调用取决于 Azure 密钥保管库的名称,以及为服务主体租户 ID、客户端 ID 和客户端密码创建的 Azure 密钥保管库机密的名称。 在配置中设置这些相应的属性名称/值:

      • 客户端 ID 属性:fs.azure.account.oauth2.client.id.<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net
      • 客户端机密属性:fs.azure.account.oauth2.client.secret.<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net
      • 租户 ID 属性:fs.azure.account.oauth2.client.endpoint.<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net
      • 租户 ID 值:https://login.microsoftonline.com/<TENANT_ID>/oauth2/token
      from pyspark.sql import SparkSessionsc = SparkSession.builder.getOrCreate()
      token_library = sc._jvm.com.microsoft.azure.synapse.tokenlibrary.TokenLibrary# Set up service principal tenant ID, client ID and secret from Azure Key Vault
      client_id = token_library.getSecret("<KEY_VAULT_NAME>", "<CLIENT_ID_SECRET_NAME>")
      tenant_id = token_library.getSecret("<KEY_VAULT_NAME>", "<TENANT_ID_SECRET_NAME>")
      client_secret = token_library.getSecret("<KEY_VAULT_NAME>", "<CLIENT_SECRET_NAME>")# Set up service principal which has access of the data
      sc._jsc.hadoopConfiguration().set("fs.azure.account.auth.type.<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net", "OAuth"
      )
      sc._jsc.hadoopConfiguration().set("fs.azure.account.oauth.provider.type.<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net","org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
      )
      sc._jsc.hadoopConfiguration().set("fs.azure.account.oauth2.client.id.<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net",client_id,
      )
      sc._jsc.hadoopConfiguration().set("fs.azure.account.oauth2.client.secret.<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net",client_secret,
      )
      sc._jsc.hadoopConfiguration().set("fs.azure.account.oauth2.client.endpoint.<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net","https://login.microsoftonline.com/" + tenant_id + "/oauth2/token",
      )
      
  5. 使用 abfss://<FILE_SYSTEM_NAME>@<STORAGE_ACCOUNT_NAME>.dfs.core.windows.net/<PATH_TO_DATA> 格式的数据 URI 导入和转换数据,如使用 Titanic 数据的代码示例所示。
    file
    file

从 Azure Blob 存储导入和处理数据

可以使用存储帐户访问密钥或共享访问签名 (SAS) 令牌访问 Azure Blob 存储数据。 应将这些凭据作为机密存储在 Azure 密钥保管库中,并在会话配置中将其设置为属性。

若要开始交互式数据整理,请执行以下操作:

  1. 在左侧Azure 机器学习工作室面板中,选择“笔记本”。

  2. 在“计算”选择菜单中,选择“Azure 机器学习无服务器 Spark”下的“无服务器 Spark 计算”,或者从“计算”选择菜单中选择“Synapse Spark 池”下附加的 Synapse Spark 池。

  3. 若要配置存储帐户访问密钥或共享访问签名 (SAS) 令牌以便在 Azure 机器学习笔记本中访问数据,请执行以下操作:

    • 对于访问密钥,请设置属性 fs.azure.account.key.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net,如以下代码片段所示:

      from pyspark.sql import SparkSessionsc = SparkSession.builder.getOrCreate()
      token_library = sc._jvm.com.microsoft.azure.synapse.tokenlibrary.TokenLibrary
      access_key = token_library.getSecret("<KEY_VAULT_NAME>", "<ACCESS_KEY_SECRET_NAME>")
      sc._jsc.hadoopConfiguration().set("fs.azure.account.key.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net", access_key
      )
      
    • 对于 SAS 令牌,请设置属性 fs.azure.sas.<BLOB_CONTAINER_NAME>.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net,如以下代码片段所示:

      from pyspark.sql import SparkSessionsc = SparkSession.builder.getOrCreate()
      token_library = sc._jvm.com.microsoft.azure.synapse.tokenlibrary.TokenLibrary
      sas_token = token_library.getSecret("<KEY_VAULT_NAME>", "<SAS_TOKEN_SECRET_NAME>")
      sc._jsc.hadoopConfiguration().set("fs.azure.sas.<BLOB_CONTAINER_NAME>.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net",sas_token,
      )
      

      备注

      上述代码片段中的 get_secret() 调用需要 Azure 密钥库的名称,以及为 Azure Blob 存储帐户访问密钥或 SAS 令牌创建的机密的名称

  4. 在同一笔记本中执行数据整理代码。 将数据 URI 的格式设置为 wasbs://<BLOB_CONTAINER_NAME>@<STORAGE_ACCOUNT_NAME>.blob.core.windows.net/<PATH_TO_DATA>,类似于此代码片段所示:

    import pyspark.pandas as pd
    from pyspark.ml.feature import Imputerdf = pd.read_csv("wasbs://<BLOB_CONTAINER_NAME>@<STORAGE_ACCOUNT_NAME>.blob.core.windows.net/data/titanic.csv",index_col="PassengerId",
    )
    imputer = Imputer(inputCols=["Age"], outputCol="Age").setStrategy("mean"
    )  # Replace missing values in Age column with the mean value
    df.fillna(value={"Cabin": "None"}, inplace=True
    )  # Fill Cabin column with value "None" if missing
    df.dropna(inplace=True)  # Drop the rows which still have any missing value
    df.to_csv("wasbs://<BLOB_CONTAINER_NAME>@<STORAGE_ACCOUNT_NAME>.blob.core.windows.net/data/wrangled",index_col="PassengerId",
    )
    

    备注

    此 Python 代码示例使用 pyspark.pandas。 只有 Spark 运行时版本 3.2 或更高版本才支持此功能。

从 Azure 机器学习数据存储导入和整理数据

file
若要从 Azure 机器学习数据存储访问数据,请使用 URI 格式azureml://datastores/<DATASTORE_NAME>/paths/<PATH_TO_DATA>定义数据存储上数据的路径。 若要在笔记本会话中以交互方式处理 Azure 机器学习数据存储中的数据,请执行以下操作:

  1. 在“计算”选择菜单中,选择“Azure 机器学习无服务器 Spark”下的“无服务器 Spark 计算”,或者从“计算”选择菜单中选择“Synapse Spark 池”下附加的 Synapse Spark 池。

  2. 此代码示例显示了如何使用 azureml:// 数据存储 URI pyspark.pandaspyspark.ml.feature.Imputer 从 Azure 机器学习数据存储中读取和处理大量数据。

    import pyspark.pandas as pd
    from pyspark.ml.feature import Imputerdf = pd.read_csv("azureml://datastores/workspaceblobstore/paths/data/titanic.csv",index_col="PassengerId",
    )
    imputer = Imputer(inputCols=["Age"], outputCol="Age").setStrategy("mean"
    )  # Replace missing values in Age column with the mean value
    df.fillna(value={"Cabin": "None"}, inplace=True
    )  # Fill Cabin column with value "None" if missing
    df.dropna(inplace=True)  # Drop the rows which still have any missing value
    df.to_csv("azureml://datastores/workspaceblobstore/paths/data/wrangled",index_col="PassengerId",
    )
    

    备注

    此 Python 代码示例使用 pyspark.pandas。 只有 Spark 运行时版本 3.2 或更高版本才支持此功能。

Azure 机器学习数据存储可以使用 Azure 存储帐户凭据访问数据

  • 访问密钥
  • SAS 令牌
  • 服务主体 (service principal)

或提供无凭据的数据访问。 根据数据存储类型和基础 Azure 存储帐户类型,选择适当的身份验证机制来确保数据访问。 下表总结了用于访问 Azure 机器学习数据存储中的数据的身份验证机制:

存储帐户类型无凭据数据访问数据访问机制角色分配
Azure Blob访问密钥或 SAS 令牌不需要角色分配
Azure Blob用户标识传递*用户标识应在 Azure Blob 存储帐户中具有适当的角色分配
Azure Data Lake Storage (ADLS) Gen 2服务主体服务主体应在 Azure Data Lake Storage (ADLS) Gen 2 存储帐户中具有适当的角色分配
Azure Data Lake Storage (ADLS) Gen 2用户标识传递用户标识应在 Azure Data Lake Storage (ADLS) Gen 2 存储帐户中具有适当的角色分配

只有在未启用软删除的情况下,* 用户标识直通才适用于指向 Azure Blob 存储帐户的无凭据数据存储。

默认文件共享挂载到无服务器 Spark 计算和附加的 Synapse Spark 池。

在 Azure 机器学习工作室中,默认文件共享中的文件显示在“文件”选项卡下的目录树中。笔记本代码可以使用 file:// 协议以及文件的绝对路径直接访问此文件共享中存储的文件,而无需进行更多配置。 此代码片段演示如何访问存储在默认文件共享上的文件:

import os
import pyspark.pandas as pd
from pyspark.ml.feature import Imputerabspath = os.path.abspath(".")
file = "file://" + abspath + "/Users/<USER>/data/titanic.csv"
print(file)
df = pd.read_csv(file, index_col="PassengerId")
imputer = Imputer(inputCols=["Age"],outputCol="Age").setStrategy("mean") # Replace missing values in Age column with the mean value
df.fillna(value={"Cabin" : "None"}, inplace=True) # Fill Cabin column with value "None" if missing
df.dropna(inplace=True) # Drop the rows which still have any missing value
output_path = "file://" + abspath + "/Users/<USER>/data/wrangled"
df.to_csv(output_path, index_col="PassengerId")

备注

此 Python 代码示例使用 pyspark.pandas。 只有 Spark 运行时版本 3.2 或更高版本才支持此功能。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

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

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

相关文章

京东h5st逆向 python代码算法还原逆向分析 h5st代码

废话不多说直接开干&#xff01; 知识点 node python 上才艺 京东抓包遇到h5st算法 # codingutf-8 import json import math import random import time from tkinter import filedialog, messagebox, ttk import urllibfrom urllib.parse import quote, unquote from urllib …

“Lazada API揭秘:按关键字搜索商品,轻松掌握电商未来!“

Lazada的API可以按关键字搜索商品。请求参数包括&#xff1a; key&#xff1a;调用key&#xff0c;必须以GET方式拼接在URL中。secret&#xff1a;调用密钥。qshoe&&#xff1a;要搜索的关键字。start_price&end_price&&#xff1a;价格范围&#xff0c;可按价格筛…

【vtk学习笔记1】编译安装vtk9.2.6,运行官方例子

一、编译安装vtk-9.2.6 1. 下载VTK。推荐从github下载。目前从VTK官网只能下载最新的RC版或者以前的老版本&#xff0c;我是在github上下载的vtk9.2.6 tag版本。 2. 用Cmake-gui配置Visual Studio工程。主要注意配置VTK安装的路径、是否支持QT&#xff0c;需要的话正确配置Qt5…

编译时库的顺序影响编译的结果:动态库libxxxx.so:undefined reference to `Json::Value::operator[](c

文章目录 问题产生分析解决 问题产生 问题的起因是&#xff0c;我在使用自己打包的动态库的时候&#xff0c;编译时提示动态库里指向的另一个库找不到… 分析 当编译器进行链接时&#xff0c;它按照从左到右的顺序解析源文件和库文件。如果在链接过程中遇到未解析的符号&…

【NLP】什么是语义搜索以及如何实现 [Python、BERT、Elasticsearch]

语义搜索是一种先进的信息检索技术&#xff0c;旨在通过理解搜索查询和搜索内容的上下文和含义来提高搜索结果的准确性和相关性。与依赖于匹配特定单词或短语的传统基于关键字的搜索不同&#xff0c;语义搜索会考虑查询的意图、上下文和语义。 语义搜索在搜索结果的精度和相关…

微信小程序导入js使用时候报错

我是引入weapp库时候&#xff0c;导入js会报错。 需要在小程序开发工具里面配置 就可以了。

layui form表单 label和input宽度

情况是这样的&#xff0c;表单里有多个输入框&#xff0c;只有个别label 是长的&#xff0c;我就想调整一下个别长的&#xff0c;其它不变 <div class"layui-form-item"><label class"layui-form-label">是否分标分量:</label><div …

医学AI智能导诊系统源码

医院智能导诊系统是一款基于人工智能和大数据技术开发的医疗辅助软件&#xff0c;旨在为患者提供更加便捷、精准的医疗服务。 一、什么是智能导诊系统&#xff1f; 智能导诊系统是一种基于人工智能和大数据技术开发的医疗辅助软件&#xff0c;它能够通过对患者的症状、病史等信…

C# 通过Costura.Fody把DLL合并到exe程序中

打包独立的exe程序有多种方法&#xff0c;这里只说Costura.Fody。 我们用VS发布应用程序可以借助Costura.Fody直接打包成一个独立的exe程序&#xff0c;但是一些非托管的做了几次都没打进去&#xff0c;最后成功了&#xff0c;这里记录一下。 首先安装Costura.Fody 或者可以通…

UDP 协议

UDP协议特点&#xff1a; 无连接&#xff1a;只需要知道对方的IP和端口就可以向对方发送数据。 不可靠&#xff1a;没有确认应答机制&#xff0c;没有重传机制。 面向数据报&#xff1a;每调用一次sendto() &#xff0c;就直接将这些数据交给网络层了&#xff0c;不能控制数据读…

Collectors.toMap报错:空指针 key重复

Java 8中的stream在项目开发中被同学们用的风生水起&#xff0c;当然大家也踩了不少坑。下面我就来说说Collections.toMap在项目使用中踩的坑&#xff0c;避免大家重复被坑。 一.介绍Collectors.toMap Collectors.toMap 是 Java 8 中的一个收集器&#xff0c;它可以将流中的元…

C# OpenCvSharp DNN 部署L2CS-Net人脸朝向估计

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_DNN_Demo …

hadoop hdfs的API调用,在mall商城代码中添加api的调用

在网上下载了现成的商城代码的源码 本次旨在熟悉hdfs的api调用&#xff0c;不关注前后端代码的编写&#xff0c;所以直接下载现成的代码&#xff0c;代码下载地址。我下载的是前后端在一起的代码&#xff0c;这样测试起来方便 GitHub - newbee-ltd/newbee-mall: &#x1f525; …

Seata入门系列【18】Seata集成Mybatis-Plus多数据源

1 前言 在使用单个服务&#xff0c;多数据源时&#xff0c;也存在分布式事务问题。 当单体系统需要访问多个数据库&#xff08;实例&#xff09;时就会产生分布式事务。 比如&#xff1a;用户信 息和订单信息分别在两个MySQL实例存储&#xff0c;用户管理系统删除用户信息&am…

驱动开发11-2 编写SPI驱动程序-点亮数码管

驱动程序 #include <linux/init.h> #include <linux/module.h> #include <linux/spi/spi.h>int m74hc595_probe(struct spi_device *spi) {printk("%s:%d\n",__FILE__,__LINE__);char buf[]{0XF,0X6D};spi_write(spi,buf,sizeof(buf));return 0; …

【SpringMVC篇】5种类型参数传递json数据传参

&#x1f38a;专栏【SpringMVC】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f33a;普通参数&#x1f33a;POJO参数&#x1f33a;嵌套…

nacos 常见问题整理包含容器环境

文章目录 0. nacos客户端日志文件位置最常见的问题1. 容器环境端口开放不够导致的问题原理解析 2.服务端启用了鉴权客户端常见错误信息如下服务端报错信息如下 其他一些问题0. nacos高版本服务端是否支持旧的客户端&#xff1f;1. Error code:503,msg:server is DOWN now, plea…

【UE5】如何在UE5.1中创建级联粒子系统

1. 可以先新建一个actor蓝图&#xff0c;然后在该蓝图中添加一个“Cascade Particle System Component” 2. 在右侧的细节面板中&#xff0c;点击“模板”一项中的下拉框&#xff0c;然后点击“Cascade粒子系统&#xff08;旧版&#xff09;” 然后就可以选择在哪个路径下创建级…

前端Vue框架系列—— 学习笔记总结Day04

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

Java NIO为何导致堆外内存OOM了?

Java NIO为何导致堆外内存OOM了&#xff1f; 描述 某天报警&#xff1a;某台机器部署的一个服务突然无法访问。谨记第一反应登录机器查看日志&#xff0c;因为服务挂掉&#xff0c;很可能因OOM。这个时候在机器的日志中发现了如下的一些信息&#xff1a; nio handle failed j…