PySpark 本地开发环境搭建与实践

目录

一、PySpark 本地开发环境搭建

(一)Windows 本地 JDK 和 Hadoop 的安装

(二)Windows 安装 Anaconda

(三)Anaconda 中安装 PySpark

(四)Pycharm 中创建工程

二、编写代码

(一)编写环境变量的代码

(二)获取 SparkContext 对象

(三)将代码模板化

完整的模板:记得给模板起个名字pyspark_local_script

三、本地开发案例

(一)WordCount 案例

(二)使用正则解决特殊分隔符问题

(三)本地开发 - 读取 hdfs 上的数据

(四)本地开发 - 获取外部的变量

传递数据

参数设置界面

四、Spark 程序的监控

4040 界面的使用

五、local 和结果文件的数量问题

(一)local 模式并行度

(二)结果文件数量与 local 模式的关系

六、总结



        在大数据处理领域,PySpark 作为一个强大的工具,为数据科学家和开发人员提供了便捷的方式来处理大规模数据。本文将详细介绍如何在 Windows 环境下搭建 PySpark 本地开发环境,并深入探讨在这个环境下的代码编写、案例实践、程序监控以及一些常见问题的处理,帮助读者快速上手 PySpark 本地开发。

一、PySpark 本地开发环境搭建

(一)Windows 本地 JDK 和 Hadoop 的安装

        JDK(Java Development Kit)是 Java 开发的基础,而 Hadoop 是处理大数据的重要框架。在 Windows 上安装它们是后续搭建 PySpark 环境的第一步。安装过程需要注意选择合适的版本,并按照安装向导进行操作,确保安装路径等设置正确。

JDK安装配置教程_jdk64位安装-CSDN博客

Windows 系统安装 Hadoop 详细教程-CSDN博客

(二)Windows 安装 Anaconda

         Anaconda 是一个开源的 Python 发行版本,它包含了 conda、Python 等 180 多个科学包及其依赖项。右键以管理员身份运行安装程序,默认安装到了 ProgramData 文件夹(这是一个非空文件夹)。在安装过程中,要注意各种安装选项,确保安装顺利进行。Anaconda 的安装为后续在其环境中安装 PySpark 等相关包提供了基础。

通过网盘分享Miniconda3的:Miniconda3-py38_4.11.0-Windows-x86_64.exe

(三)Anaconda 中安装 PySpark

         在命令提示符(cmd)中进行操作。在安装过程中,如果遇到需要输入 y 或者 n 的情况,输入 y。安装完成后,可以通过 conda list 或者 pip list 检查是否包含 py4j 和 pyspark 两个包。PySpark 的安装路径在 $ANACONDA_HOME/Lib/site - packages。这里需要强调的是,这实际上是在本地安装一个 Spark 软件,如果没有 Spark 环境,仅仅安装了 PySpark 是无法运行 Spark 代码的。

(四)Pycharm 中创建工程

  1. 选择 Conda:在 Pycharm 中创建工程时,选择 Conda。直接点确定即可。因为 Anaconda 包含了 Python 并且可以安装各种环境,比如 pyspark,通过这种关联,Pycharm 可以使用 Anaconda 中的工具。
  2. 解决识别问题:如果 Anaconda 没有安装在 C 盘,可能会出现识别不了的情况。此时需要手动选择。
  3. 检查安装包中是否有相关软件,并验证选择的解释器是否正确。
  4. 创建文件夹,为后续代码编写做好准备。

main :用于存放每天开发的一些代码文件
resources :用于存放程序中需要用到的配置文件
datas :用于存放每天用到的一些数据文件
test :用于存放测试时的一些代码文件

二、编写代码

(一)编写环境变量的代码

        环境变量的设置对于 PySpark 程序的运行至关重要。它确保程序能够找到所需的资源和配置。在代码中,要正确地设置与 Spark 相关的环境变量,包括 Spark 的安装路径、配置文件路径等。

import osif __name__ == '__main__':# 你自己的JDK路径os.environ['JAVA_HOME'] = 'D:/Program Files/Java/jdk1.8.0_271'# 配置Hadoop的路径,就是前面解压的那个路径os.environ['HADOOP_HOME'] = 'D:/hadoop-3.3.1/hadoop-3.3.1'# 配置base环境Python解析器的路径os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base环境Python解析器的路径os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'

(二)获取 SparkContext 对象

         SparkContext 是 Spark 中的核心类,任何一个 Spark 的程序都必须包含一个 SparkContext 类的对象。通过获取这个对象,我们可以进一步构建和执行 Spark 任务。例如:

import os
# 导入pyspark模块
from pyspark import SparkContext,SparkConfif __name__ == '__main__':# 配置环境os.environ['JAVA_HOME'] = 'D:/Program Files/Java/jdk1.8.0_271'# 配置Hadoop的路径,就是前面解压的那个路径os.environ['HADOOP_HOME'] = 'D:/hadoop-3.3.1/hadoop-3.3.1'# 配置base环境Python解析器的路径os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base环境Python解析器的路径os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'# 获取 conf 对象conf = SparkConf().setMaster("local[*]").setAppName("第一个Spark程序")# 假如我想设置压缩# conf.set("spark.eventLog.compression.codec","snappy")# 根据配置文件,得到一个SC对象,第一个conf 是 形参的名字,第二个conf 是实参的名字sc = SparkContext(conf=conf)print(sc)# 使用完后,记得关闭sc.stop()

(三)将代码模板化

         创建一个名为 pyspark_local_script 的模板,并在其中添加必要的内容。模板化代码有助于提高代码的复用性和规范性。在模板中,可以将一些常用的代码结构和函数定义好,方便在不同的项目中使用。

完整的模板:记得给模板起个名字pyspark_local_script
import os
# 导入pyspark模块
from pyspark import SparkContext,SparkConf"""
------------------------------------------Description : TODO:SourceFile : ${NAME}Author  : ${USER}Date  : ${DATE}
-------------------------------------------
"""if __name__ == '__main__':# 配置环境os.environ['JAVA_HOME'] = 'D:/Program Files/Java/jdk1.8.0_271'# 配置Hadoop的路径,就是前面解压的那个路径os.environ['HADOOP_HOME'] = 'D:/hadoop-3.3.1/hadoop-3.3.1'# 配置base环境Python解析器的路径os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base环境Python解析器的路径os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'# 获取 conf 对象conf = SparkConf().setMaster("local[*]").setAppName("第一个Spark程序")# 假如我想设置压缩# conf.set("spark.eventLog.compression.codec","snappy")# 根据配置文件,得到一个SC对象,第一个conf 是 形参的名字,第二个conf 是实参的名字sc = SparkContext(conf=conf)print(sc)# 使用完后,记得关闭sc.stop()

模板的使用:

三、本地开发案例

(一)WordCount 案例

代码编写:这是一个经典的大数据处理案例。通过读取文本文件,将其中的单词进行拆分、计数。代码实现如下:

import os
# 导入pyspark模块
from pyspark import SparkContext, SparkConfif __name__ == '__main__':# 配置环境os.environ['JAVA_HOME'] = 'C:/Program Files/java/jdk1.8.0_181'# 配置Hadoop的路径,就是前面解压的那个路径os.environ['HADOOP_HOME'] = 'D:/Linux/hadoop/hadoop-3.3.1'# 配置base环境Python解析器的路径os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base环境Python解析器的路径os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'# 获取 conf 对象# setMaster  按照什么模式运行,local  bigdata01:7077  yarn#  local[2]  使用2核CPU   * 你本地资源有多少核就用多少核#  appName 任务的名字conf = SparkConf().setMaster("local[*]").setAppName("第一个Spark程序")# 假如我想设置压缩# conf.set("spark.eventLog.compression.codec","snappy")# 根据配置文件,得到一个SC对象,第一个conf 是 形参的名字,第二个conf 是实参的名字sc = SparkContext(conf=conf)print(sc)fileRdd = sc.textFile("../../datas/WordCount/data.txt")rsRdd = fileRdd.filter(lambda x: len(x) > 0) \.flatMap(lambda line: line.strip().split()) \.map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)rsRdd.saveAsTextFile("../datas/WordCount/result2")# 使用完后,记得关闭sc.stop()# 注意,在cmd窗口中执行spark-submit命令时,需要将以下路径添加到环境变量中

建议安装一个工具psutil,如果不想看到就在 Python解释器中安装:pip install psutil

查看运行结果:运行代码后,可以在指定的输出路径中查看结果文件。结果文件中包含了每个单词及其出现的次数。

常见的其他错误:

(二)使用正则解决特殊分隔符问题

        在实际数据处理中,可能会遇到特殊的分隔符。这时可以使用正则表达式来改造 WordCount 代码。例如,如果数据是用特定的非空格字符分隔的,可以通过修改 flatMap 函数中的分隔逻辑,使用正则表达式来正确拆分单词。

import os
import re# 导入pyspark模块
from pyspark import SparkContext, SparkConfif __name__ == '__main__':
# 配置环境
os.environ['JAVA_HOME'] = 'C:/Program Files/java/jdk1.8.0_181'
# 配置Hadoop的路径,就是前面解压的那个路径
os.environ['HADOOP_HOME'] = 'D:/Linux/hadoop/hadoop-3.3.1'
# 配置base环境Python解析器的路径
os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe' # 配置base环境Python解析器的路径
os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'# 获取 conf 对象
# setMaster 按照什么模式运行,local bigdata01:7077 yarn
# local[2] 使用2核CPU * 你本地资源有多少核就用多少核
# appName 任务的名字
conf = SparkConf().setMaster("local[*]").setAppName("")
# 假如我想设置压缩
# conf.set("spark.eventLog.compression.codec","snappy")
# 根据配置文件,得到一个SC对象,第一个conf 是 形参的名字,第二个conf 是实参的名字
sc = SparkContext(conf=conf)
print(sc)fileRdd = sc.textFile("../../datas/WordCount/data.txt")
rsRdd = fileRdd.filter(lambda x: len(x) > 0) \
.flatMap(lambda line: re.split("\\s+", line.strip())) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda sum, num: sum+num)rsRdd.saveAsTextFile("../datas/WordCount/result3")# 使用完后,记得关闭
sc.stop()

(三)本地开发 - 读取 hdfs 上的数据

        在 Windows 环境下,用户通常没有权限访问 hdfs 文件系统。这需要进行一些额外的配置,比如配置 Hadoop 的相关权限,或者通过一些代理工具来实现访问。在代码中,要正确设置 Hadoop 的配置参数,以确保能够读取 hdfs 上的数据。

	fileRdd = sc.textFile("hdfs://bigdata01:9820/spark/wordcount/input/*")rsRdd = fileRdd.filter(lambda line: len(line.strip()) > 0 ).flatMap(lambda line: re.split("\\s+",line.strip())).map(lambda word: (word,1)).reduceByKey(lambda sum,num : sum+num)rsRdd.saveAsTextFile("hdfs://bigdata01:9820/spark/wordcount/output4")

以上这个说明,windows用户没有权限访问hdfs文件系统

# 申明当前以root用户的身份来执行操作
os.environ['HADOOP_USER_NAME'] = 'root'

完整代码

import os
import re# 导入pyspark模块
from pyspark import SparkContext, SparkConfif __name__ == '__main__':# 配置环境os.environ['JAVA_HOME'] = 'C:/Program Files/java/jdk1.8.0_181'# 配置Hadoop的路径,就是前面解压的那个路径os.environ['HADOOP_HOME'] = 'D:/Linux/hadoop/hadoop-3.3.1'# 配置base环境Python解析器的路径os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base环境Python解析器的路径os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'# 申明当前以root用户的身份来执行操作os.environ['HADOOP_USER_NAME'] = 'root'conf = SparkConf().setMaster("local[*]").setAppName("")sc = SparkContext(conf=conf)fileRdd = sc.textFile("hdfs://bigdata01:9820/spark/wordcount/input/*")rsRdd = fileRdd.filter(lambda line: len(line.strip()) > 0) \.flatMap(lambda line: re.split("\\s+", line.strip())) \.map(lambda word: (word, 1))\.reduceByKey(lambda sum, num: sum + num)rsRdd.saveAsTextFile("hdfs://bigdata01:9820/spark/wordcount/output4")# 使用完后,记得关闭sc.stop()

运行

(四)本地开发 - 获取外部的变量

        类似于 Java 中的 String[] args,在 PySpark 中也可以获取外部变量。可以通过命令行参数传递的方式来实现。例如,在运行 pyspark 脚本时,可以使用 spark - sumit xxxxx.py 参数 1, 参数 2 的形式传递参数。在代码中,需要对这些参数进行解析和使用。

import os
import re
import sys# 导入pyspark模块
from pyspark import SparkContext, SparkConfif __name__ == '__main__':# 配置环境os.environ['JAVA_HOME'] = 'C:/Program Files/java/jdk1.8.0_181'# 配置Hadoop的路径,就是前面解压的那个路径os.environ['HADOOP_HOME'] = 'D:/Linux/hadoop/hadoop-3.3.1'# 配置base环境Python解析器的路径os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base环境Python解析器的路径os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'# 申明当前以root用户的身份来执行操作os.environ['HADOOP_USER_NAME'] = 'root'# 获取 conf 对象conf = SparkConf().setMaster("local[*]").setAppName("")# 根据配置文件,得到一个SC对象,第一个conf 是 形参的名字,第二个conf 是实参的名字sc = SparkContext(conf=conf)print(sc)# 获取第一个参数fileRdd = sc.textFile(sys.argv[1])rsRdd = fileRdd.filter(lambda line: len(line.strip()) > 0) \.flatMap(lambda line: re.split("\\s+", line.strip())) \.map(lambda word: (word, 1)) \.reduceByKey(lambda sum, num: sum + num)# 获取第二个参数rsRdd.saveAsTextFile(sys.argv[2])# 使用完后,记得关闭sc.stop()
传递数据

参数一: hdfs://bigdata01:9820/spark/wordcount/input/*
参数二: hdfs://bigdata01:9820/spark/wordcount/output4

参数设置界面

四、Spark 程序的监控

4040 界面的使用

        因为是本地的程序,所以可以通过访问地址 http://localhost:4040 来监控程序。每个 Spark 程序都有一个对应的 4040 界面。这个界面提供了丰富的信息:

  1. RDD 相关信息:每个黑点表示一个 RDD,每个矩形框中的 RDD 的转换都是在内存中完成的,曲线代表经过了 Shuffle,灰色代表没有执行(因为之前执行过)。
  2. 进程信息:显示当前这个程序的运行进程的信息。每个 Spark 程序都由两种进程组成:一个 Driver 和多个 Executors。Driver 进程负责解析程序,构建 DAG 图,构建 Stage,构建、调度、监控 Task 任务的运行;Executor 进程负责运行程序中的所有 Task 任务。
  3. 存储信息:Storage 部分显示当前这个程序在内存缓存的数据信息。
  4. 配置信息:Environment 显示当前这个程序所有的配置信息。

五、local 和结果文件的数量问题

(一)local 模式并行度

  1. local:使用本地模式,并行度是 1。
  2. local[3]:使用本地模式,并行度是 3,这个并行度最好和 CPU 的核数一致,一般并行度 <= CPU 的核数。
  3. local[*]:并行度 = CPU 的核数。

(二)结果文件数量与 local 模式的关系

        文件的结果经常是 2 个文件,这跟分区数有关系,跟 local = N 也有一定的关系。其规律是 min(N,2),例如如果是 local [1],最后的文件数量就是 1。

        如果在 local 模式下,想要结果文件是 10,可以使用 sc.textFile("../datas/wordcount/data.txt",10) 的方式来设置分区数。

六、总结

        本文详细介绍了 PySpark 本地开发环境的搭建过程,包括 JDK、Hadoop、Anaconda、PySpark 的安装以及 Pycharm 工程的创建。同时,深入讲解了代码编写、本地开发案例(如 WordCount、处理特殊分隔符、读取 hdfs 数据、获取外部变量)、Spark 程序的监控和 local 模式下结果文件数量问题等内容。通过掌握这些知识和技能,读者可以在 Windows 本地环境中高效地进行 PySpark 开发,处理大规模数据,解决实际业务中的数据分析和处理问题。希望本文能为读者在 PySpark 学习和实践的道路上提供有力的帮助,让读者能够更好地利用这个强大的工具来挖掘数据的价值。

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

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

相关文章

UI自动化测试 —— CSS元素定位实践!

前言 自动化测试元素定位是指在自动化测试过程中&#xff0c;通过特定的方法或策略来准确识别和定位页面上的元素&#xff0c;以便对这些元素进行进一步的操作或断言。这些元素可以是文本框、按钮、链接、图片等HTML页面上的任何可见或不可见的组件。 在自动化测试中&#xf…

AI大模型重塑软件开发:流程、优势、挑战与展望

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

一篇文章教会你,Pycharm 的常用配置及快捷键~

每一位Python开发者都熟悉PyCharm这个强大的IDE&#xff0c;它提供了丰富的功能来提高编程效率。但你是否充分利用了PyCharm的所有配置和快捷键&#xff1f;今天&#xff0c;我们就来深度剖析PyCharm的常用配置和快捷键&#xff0c;让你从入门到精通&#xff0c;提升编程效率&a…

聚划算!Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测

聚划算&#xff01;Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测 目录 聚划算&#xff01;Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 聚划算&#xff01;Tran…

【网络安全】|kali中安装nessus

1、使用 df -h 命令查看磁盘使用情况&#xff0c;确保磁盘容量大于40G 简单粗暴办法&#xff1a;重装系统&#xff0c;装系统中注意磁盘空间相关的选项 //磁盘扩容&#xff1a;https://wiki.bafangwy.com/doc/670/ 2、安装 nessus 安装教程 https://blog.csdn.net/Cairo_A/a…

sqlserver、达梦、mysql调用存储过程(带输入输出参数)

1、sqlserver&#xff0c;可以省略输出参数 --sqlserver调用存储过程&#xff0c;有输入参数&#xff0c;有输出参数--省略输出参数 exec proc_GetReportPrintData 1, , , 1--输出参数为 null exec proc_GetReportPrintData 1, , , 1, null--固定输出参数 exec proc_GetReport…

要在微信小程序中让一个 `view` 元素内部的文字水平垂直居中,可以使用 Flexbox 布局

文章目录 主要特点&#xff1a;基本用法&#xff1a;常用属性&#xff1a; 要在微信小程序中让一个 view 元素内部的文字水平垂直居中&#xff0c;可以使用 Flexbox 布局。以下是如何设置样式的示例&#xff1a; .scan-button {display: flex; /* 启用 Flexbox 布局 */justify…

Java基础-I/O流

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 字节流 定义 说明 InputStream与OutputStream示意图 说明 InputStream的常用方法 说明 OutputStrea…

【Linux】简易版shell

文章目录 shell的基本框架PrintCommandLineGetCommandLineParseCommandLineExecuteCommandInitEnvCheckAndExecBuildCommand代码总览运行效果总结 shell的基本框架 要写一个命令行我们首先要写出基本框架。 打印命令行获取用户输入的命令分析命令执行命令 基本框架的代码&am…

Java项目实战II基于Java+Spring Boot+MySQL的网上摄影工作室(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网…

宝塔Linux面板安装PHP扩展失败报wget: unable to resolve host address ‘download.bt.cn’

一、问题&#xff1a; 当使用宝塔面板安装PHP扩展失败出现如下错误时 Resolving download.bt.cn(download.bt.cn)...failed: Connection timed out. wget: unable toresolve host address download.bt.cn’ 二、解决&#xff1a; 第一步&#xff1a;如下命令执行拿到返回的I…

攻防靶场(28):通过SNMP进行信息收集 JOY

目录 1.侦查 1.1 获取目标网络信息&#xff1a;IP地址 1.2 主动扫描&#xff1a;扫描IP地址块 1.3 收集受害者主机信息&#xff1a;软件 2. 数据窃取 2.1 通过备用协议窃取&#xff1a;通过未加密的非C2协议窃取 2.2 通过备用协议窃取&#xff1a;通过未加密的非C2协议窃取 3. …

LeetCode:83. 删除排序链表中的重复元素 II(java) 保留一个重复的

目录 题目描述: 代码: 第一种: 第二种: 题目描述: 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a…

C++ 类与对象(类、实例化、this指针)

目录 一、前言 二、正文 1.类和对象 1.1类定义格式 1.2访问限定符 1.3类域 2.实例化 2.1实例化概念 2.2对象大小 3.this指针 三、结语 一、前言 前面我们已经了解了缺省参数和函数重载等&#xff0c;今天让我们来学习类与对象吧&#xff0c;因为类与对象的内容很多&a…

【jvm】为什么Xms和Xmx的值通常设置为相同的?

目录 1. 说明2. 避免性能开销3. 提升稳定性4. 简化配置5. 优化垃圾收集6. 获取参数6.1 代码示例6.2 结果示例 1. 说明 1.-Xms 和 -Xmx 参数分别用于设置堆内存的初始大小&#xff08;最小值&#xff09;和最大大小。2.在开发环境中&#xff0c;开发人员可能希望快速启动应用程…

大模型面试题:Prefix LM和Causal LM的区别是啥?

获取更多面试真题的集合&#xff0c;请移步至 https://pica.zhimg.com/80/v2-7fd6e77f69aa02c34ca8c334870b3bcd_720w.webp?sourced16d100b 说白了&#xff1a;就是attention mask不一样&#xff0c;如下所示&#xff1a; img 它们定义如下&#xff1a; Prefix LM&#xff…

学习虚幻C++开发日志——定时器

官方文档&#xff1a;虚幻引擎中的Gameplay定时器 | 虚幻引擎 5.5 文档 | Epic Developer Community | Epic Developer Community 定时器 安排在经过一定延迟或一段时间结束后要执行的操作。例如&#xff0c;您可能希望玩家在获取某个能力提升道具后变得无懈可击&#xff0c;…

Windows达梦8数据库:本地编码:PG_GBK, 导入文件编码:PG_UTF8错误最优解决方法

在windows使用达梦8DM管理工具直接导入.dmp文件(可能是从Linux导出的)时出现该错误 错误如下 解决方案如下&#xff1a; 1、重新建立UTF-8编码的数据库 2、新建一个模式 3、使用CMD 命令进行导入 找到DM数据库的安装路径的bin 目录下 cmd 进入终端&#xff0c;使用命令&…

【极客兔兔-Web框架Gee详解】Day0 序言

文章目录 一、Web 开发1. 什么是Web 开发&#xff1f;2. 主要组成部分2.1 前端开发2.2 后端开发2.3 全栈开发2.4 数据库管理 3. Web开发过程3.1 规划和设计&#xff1a;3.2 开发和编码&#xff1a;3.3 测试和优化&#xff1a;3.4 部署和维护&#xff1a; 4. 总结 二、用标准库n…

树叶分类竞赛(Baseline)以及kaggle的GPU使用

树叶分类竞赛(Baseline)-kaggle的GPU使用 文章目录 树叶分类竞赛(Baseline)-kaggle的GPU使用竞赛的步骤代码实现创建自定义dataset定义data_loader模型定义超参数训练模型预测和保存结果 kaggle使用 竞赛的步骤 本文来自于Neko Kiku提供的Baseline&#xff0c;感谢大佬提供代码…