spark匯總

目錄

  • 描述
  • 運行模式
    • 1. Windows模式
      • 代碼示例
    • 2. Local模式
    • 3. Standalone模式
  • RDD
    • 描述
    • 特性
    • RDD創建
      • 代碼示例(并行化創建)
      • 代碼示例(讀取外部數據)
      • 代碼示例(讀取目錄下的所有文件)
    • 算子
    • DAG
    • SparkSQL
    • SparkStreaming

描述

在這里插入圖片描述

Apache Spark 是用于大規模數據處理的統一分析引擎。它提供 Java、Scala、Python 和 R 中的高級 API,以及支持通用執行圖的優化引擎。它還支持一組豐富的高級工具,包括用于 SQL 和結構化數據處理的Spark SQL 、用于機器學習的MLlib、用于圖形處理的 GraphX 以及用于增量計算和流處理的結構化流。

1. Spark Core
Spark的核心,是Spark運行的基礎。Spark Core以RDD為數據抽象,提供Python、Java、Scala、R語言的API,可以編程進行海量離線數據批處理計算。
2. Spark SQL
Spark SQL是Spark用來操作結構化數據的組件。通過Spark SQL對數據進行處理。
3. Spark Streaming
Spark Streaming是Spark平臺上針對實時數據進行流式計算的組件,提供了豐富的處理數據流的API。
4. Spark MLlib
MLlib是Spark提供的一個機器學習算法庫。MLlib不僅提供了模型評估、數據導入等額外的功能,還提供了一些更底層的機器學習原語。
5. Spark GraphX
GraphX是Spark面向圖計算提供的框架與算法庫。

運行模式

1. Windows模式

多用于本地測試,不需要虛擬機或服務器。

代碼示例

WordCount.scala

package com.wunaiieq//1.導入SparkConf,SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}object WordCount {def main(args: Array[String]): Unit = {//2.構建SparkConf對象,并設置本地運行和程序的名稱val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount")//3.通過SparkConf對象構建SparkContext對象val sc = new SparkContext(conf)//4.讀取文件,并生成RDD對象val fileRdd: RDD[String] = sc.textFile("data/words.txt")//5.將單詞進行切割,得到一個存儲全部單詞的集合對象val wordsRdd: RDD[String] = fileRdd.flatMap(_.split(" "))//6.將單詞轉換為Tuple2對象("hello"->("hello",1))val wordAndOneRdd: RDD[(String, Int)] = wordsRdd.map((_, 1))//7.將元組的value按照key進行分組,并對該組所有的value進行聚合操作val resultRdd: RDD[(String, Int)] = wordAndOneRdd.reduceByKey(_ + _)//8.通過collect方法收集RDD數據val wordCount: Array[(String, Int)] = resultRdd.collect()//9.輸出結果wordCount.foreach(println)}
}

log4j.properties
這個沒什么說的直接復制用即可

# Set everything to be logged to the console
log4j.rootCategory=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{MM/dd HH:mm:ss} %p %c{1}: %m%n# Set the default spark-shell/spark-sql log level to WARN. When running the
# spark-shell/spark-sql, the log level for these classes is used to overwrite
# the root logger's log level, so that the user can have different defaults
# for the shell and regular Spark apps.
log4j.logger.org.apache.spark.repl.Main=WARN
log4j.logger.org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver=WARN# Settings to quiet third party logs that are too verbose
log4j.logger.org.sparkproject.jetty=WARN
log4j.logger.org.sparkproject.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
log4j.logger.org.apache.parquet=ERROR
log4j.logger.parquet=ERROR# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR# For deploying Spark ThriftServer
# SPARK-34128:Suppress undesirable TTransportException warnings involved in THRIFT-4805
log4j.appender.console.filter.1=org.apache.log4j.varia.StringMatchFilter
log4j.appender.console.filter.1.StringToMatch=Thrift error occurred during processing of message
log4j.appender.console.filter.1.AcceptOnMatch=false

2. Local模式

一臺服務器或虛擬機搞定,所謂的Local模式,就是不需要其他任何節點資源就可以在本地執行Spark代碼的環境,一般用于教學,調試,演示等。

# 進入spark根目錄
cd /opt/module/spark/bin
# 運行視頻spark-shell
./spark-shell

webUI

[atguigu@master bin]$ jps
2081 SparkSubmit
2206 Jps
[atguigu@master bin]$ netstat -anp|grep 2081
(Not all processes could be identified, non-owned process infowill not be shown, you would have to be root to see it all.)
tcp6       0      0 192.168.16.100:42050    :::*                    LISTEN      2081/java           
tcp6       0      0 :::4040                 :::*                    LISTEN      2081/java           
tcp6       0      0 192.168.16.100:35770    :::*                    LISTEN      2081/java           
unix  2      [ ]         STREAM     CONNECTED     33071    2081/java            
unix  2      [ ]         STREAM     CONNECTED     36801    2081/java        

瀏覽器訪問

http://192.168.16.100:4040/

spark-submit
以下為使用spark提交jar包示例

./spark-submit --master local[2] --class org.apache.spark.examples.SparkPi /opt/module/spark/examples/jars/spark-examples_2.12-3.1.1.jar 100
參數描述
--class要執行程序的主類,可以更換為自己寫的應用程序的主類名稱
--master local[2]部署模式,默認為本地模式;數字 2 表示分配的虛擬 CPU 核數量
spark-examples_2.12-3.2.1.jar運行的應用類所在的 jar 包,實際使用時可以設定為自己打的 jar 包
20程序的入口參數,根據應用程序的需要,可以是任何有效的輸入值

幾種提交方式比較

工具功能特點使用場景
bin/spark-submit提交 Java/Scala/Python/R 代碼到 Spark 中運行提交代碼用正式場合,正式提交 Spark 程序運行
bin/spark-shell提供一個 Scala 解釋器環境,用來以 Scala 代碼執行 Spark 程序解釋器環境,寫一行執行一行測試、學習、寫一行執行一行、用來驗證代碼等
bin/pyspark提供一個 Python 解釋器環境,用來以 Python 代碼執行 Spark 程序解釋器環境,寫一行執行一行測試、學習、寫一行執行一行、用來驗證代碼等

3. Standalone模式

Standalone是Spark自帶的一個資源調度框架,它支持完全分布式,也支持HA
在這里插入圖片描述

  • Master角色:管理整個集群的資源,主要負責資源的調度和分配,并進行集群的監控等職責;并托管運行各個任務的Driver。如Yarn的ResourceManager。
  • Worker角色:每個從節點分配資源信息給Worker管理,管理單個服務器的資源類,分配對應的資源來運行Executor(Task);資源信息包含內存Memory和CPU
    Cores核數。如Yarn的NodeManager。
  • Driver角色,管理單個Spark任務在運行的時候的工作,如Yarn的ApplicationMaster “
  • Executor角色,單個任務運行的時候的一堆工作者,干活的。它是集群中工作節點(Worker)中的一個JVM進程,負責在 Spark 作業中運行具體任務(Task),任務彼此之間相互獨立。Spark 應用啟動時,Executor節點被同時啟動,并且始終伴隨著整個 Spark應用的生命周期而存在。如果有Executor節點發生了故障或崩潰,Spark應用也可以繼續執行,會將出錯節點上的任務調度到其他Executor節點上繼續運行。
    Executor有兩個核心功能:
    1.負責運行組成Spark應用的任務,并將結果返回給驅動器進程。
    2.它們通過自身的塊管理器(Block Manager)為用戶程序中要求緩存的
    RDD 提供內存式存儲。RDD 是直接緩存在Executor進程內的,因此任務可以在運行時充分利用緩存數據加速運算。

總結

資源管理維度
集群資源管理者:Master
單機資源管理者:Worker

任務計算維度
單任務管理者:Driver
單任務執行者:Executor

注:Executor運行于Worker進程內,由Worker提供資源供給它們運行

擴展:歷史服務器HistoryServer(可選),Spark Application運行完成以后,保存事件日志數據至HDFS,啟動HistoryServer可以查看應用運行相關信息。

4. Yarn模式
Hadoop生態圈里面的一個資源調度框架,Spark也是可以基于Yarn來計算的。
5. 云服務模式(運行在云平臺上)
Kubernetes(K8S)容器模式
Spark中的各個角色運行在Kubernetes的容器內部,并組成Spark集群環境。容器化部署是目前業界很流行的一項技術,基于Docker鏡像運行能夠讓用戶更加方便地對應用進行管理和運維。容器管理工具中最為流行的就是(K8S),而Spark也在新版本中支持了k8s部署模式。
6. Mesos
Mesos是Apache下的開源分布式資源管理框架,它被稱為是分布式系統的內核,在Twitter得到廣泛使用,管理著Twitter超過30,0000臺服務器上的應用部署,但是在國內,依然使用著傳統的Hadoop大數據框架,所以國內使用Mesos框架的并不多。

模式Spark安裝機器數需啟動的進程所屬者應用場景
Local1Spark測試
Standalone3Master及WorkerSpark單獨部署
Yarn1Yarn及HDFSHadoop混合部署

RDD

描述

Spark RDD(Resilient Distributed Dataset,彈性分布式數據集)代表一個不可變、可分區、元素可并行計算的集合,是Spark進行數據處理的基本單元。

  • 不可變性:RDD一旦創建,其數據就不可改變。對RDD的所有操作(如map、filter、reduce等)都會生成一個新的RDD,而不會修改原始RDD。這種不可變性使得RDD在分布式計算環境下非常穩定,避免了并發沖突。
  • 可分區性:RDD可以分成多個分區(Partition),每個分區就是一個數據集片段。一個RDD的不同分區可以保存到集群中的不同節點上,從而可以在集群中的不同節點上進行并行計算。分區是Spark作業并行計算的基本單位,每個分區都會被一個計算任務處理,分區的數量決定了并行計算的粒度。
  • 彈性:RDD具有彈性容錯的特點。當運算中出現異常情況導致分區數據丟失或運算失敗時,可以根據RDD的血統(Lineage)關系對數據進行重建。此外,RDD的數據可以保存在內存中,內存放不下時也可以保存在磁盤中,實現了存儲的彈性。

特性

1. 分區(Partitions) 含義:RDD的數據被劃分為多個分區,每個分區是一個數據塊,分布在集群的不同節點上。 作用:每個分區會被一個計算任務處理,分區的數量決定了并行計算的粒度。用戶可以在創建RDD時指定分區數,如果沒有指定,Spark會根據集群的資源自動設置。
示例:從HDFS文件創建RDD時,默認分區數為文件的Block數。
2. 計算函數(Compute Function) 含義:RDD的計算方法會作用到每個分區上。 作用:當對RDD進行操作(如map、filter等)時,Spark會對每個分區應用這個函數。
示例:在map操作中,計算函數會對每個元素執行指定的轉換邏輯。
3. 依賴關系(Dependencies) 含義:RDD之間存在依賴關系。 作用:在部分分區數據丟失時,Spark可以利用依賴關系重新計算丟失的數據,而不是重新計算整個RDD,提高了容錯能力。
分類:依賴關系分為窄依賴(Narrow Dependency)和寬依賴(Wide
Dependency)。窄依賴指一個父RDD的分區最多被一個子RDD的分區使用;寬依賴指一個父RDD的分區被多個子RDD的分區使用。
4. 分區器(Partitioner,可選,只有kv型RDD才有) 含義:對于鍵值對(Key-Value)類型的RDD,可以指定一個分區器來決定數據的分區方式。
作用:分區器決定了數據在集群中的分布,影響并行計算的性能。
類型:Spark支持多種分區器,如HashPartitioner(基于哈希值分區)和RangePartitioner(基于范圍分區)。
5. 優先位置(Preferred Locations,可選) 含義:RDD分區規劃應當盡量靠近數據所在的服務器 作用:Spark在進行任務調度時,會優先將數據分配到其存儲位置進行計算,減少數據傳輸開銷,提高計算效率。
示例:對于HDFS文件,優先位置通常是文件塊所在的節點。

RDD創建

1. 通過并行化集合創建,將本地集合對象轉分布式RDD

val sc = new SparkContext(conf)
val rdd1:RDD[Int]=sc.parallelize(List(1, 2, 3, 4, 5, 6), 3)
rdd1.glom().collect()

makeRdd()創建,本質上也是使用sc.parallelize(…)

def makeRDD[T: ClassTag](seq: Seq[T],numSlices: Int = defaultParallelism): RDD[T] = withScope {parallelize(seq, numSlices)
}

2. 讀取外部數據源 (比如:讀取文件 )

//通過SparkConf對象構建SparkContext對象
val sc = new SparkContext(conf)
//讀取文件
val fileRdd:RDD[String] = sc.textFile("data/words.txt")

程序執行入口:SparkContext對象
Spark RDD 編程的程序入口對象是SparkContext對象(Scala、Python、Java都是如此)
只有構建出SparkContext, 基于它才能執行后續的API調用和計算
本質上, SparkContext對編程來說, 主要功能就是創建第一個RDD出來。

代碼示例(并行化創建)

package com.wunaiieq//1.導入SparkConf類、SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object CreateByParallelize {def main(args: Array[String]): Unit = {//2.構建SparkConf對象。并設置本地運行和程序的名稱,*表示使用全部cpu內核,可以指定數量val sparkconf = new SparkConf().setMaster("local[*]").setAppName("CreateRdd1")//3.構建SparkContext對象val sparkContext = new SparkContext(sparkconf)//4.通過并行化創建RDD對象:將本地集合->分布式的RDD對象,如果不指定分區,則根據cpu內核數進行自動分配val rdd: RDD[Int] = sparkContext.parallelize(List(1, 2, 3, 4, 5, 6, 7, 8),3)//5.輸出默認的分區數println("默認分區數:"+rdd.getNumPartitions)//已經指定為3//6.collect方法:將rdd對象中每個分區的數據,都發送到Driver,形成一個Array對象val array1: Array[Int] = rdd.collect()println("rdd.collect()="+array1.mkString(","))//7.顯示出rdd對象中元素被分布到不同分區的數據信息val array2: Array[Array[Int]] = rdd.glom().collect()println("rdd.glom().collect()的內容是:")for(eleArr<- array2){println(eleArr.mkString(","))}}
}

代碼示例(讀取外部數據)

package com.wunaiieq//1.導入SparkConf,SparkContext類
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}object CreateByTextFile {def main(args: Array[String]): Unit = {//2.構建SparkConf對象,并設置本地運行和程序名val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("textFile")//3.通過sparkconf創建SparkContext對象val sparkContext = new SparkContext(sparkConf)//4.通過textFile讀取文件//4.1.讀取hdfs分布式文件系統上的文件
//    val hdfsRdd: RDD[String] = sparkContext.textFile("hdfs://192.168.16.100:9820/input/data.txt")
//    val hdfsResult: Array[String] = hdfsRdd.collect()
//    println("hdfsRdd分區數"+hdfsRdd.getNumPartitions)
//    println("hdfsRdd內容"+hdfsResult.mkString(","))//4.2讀取本地文件val localRdd1: RDD[String] = sparkContext.textFile("data/words.txt")println("localRdd1分區數"+localRdd1.getNumPartitions)println("localRdd1內容"+localRdd1.collect().mkString(","))//5.設置最小分區數val localRdd2: RDD[String] = sparkContext.textFile("data/words.txt",3)println("localRdd2分區數"+localRdd2.getNumPartitions)println("localRdd2內容"+localRdd2.collect().mkString(","))//6.最小分區數設置是一個參考值,Spark會有自己的判斷,值太大Spark不會理會val localRdd3: RDD[String] = sparkContext.textFile("data/words.txt", 100)println("localRdd3的分區數"+localRdd3.getNumPartitions)}
}

代碼示例(讀取目錄下的所有文件)

package com.wunaiieq//1.導入類
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}object CreateByWholeTextFiles {def main(args: Array[String]): Unit = {//2.構建SparkConf對象,并設置本地運行和程序名稱val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("WholeTextFiles")//3.使用sparkconf對象構建SparkContet對象val sparkContext = new SparkContext(sparkConf)//5.讀取指定目錄下的小文件val rdd: RDD[(String, String)] = sparkContext.wholeTextFiles("data")val tuples: Array[(String, String)] = rdd.collect()tuples.foreach(ele=>println(ele._1,ele._2))//6.獲取小文件中的內容val array: Array[String] = rdd.map(_._2).collect()println("---------------------------")println(array.mkString("|"))//4.關閉sparkContext對象sparkContext.stop()}
}

算子

詳見如下專題RDD算子集合

DAG

詳見如下專題DAG專題

SparkSQL

詳見如下專題SparkSQL專題

SparkStreaming

詳見如下專題SparkStreaming專題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65522.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65522.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65522.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

矩母函數(MGF)

矩母函數&#xff08;MGF&#xff09;簡介 矩母函數&#xff08;Moment Generating Function&#xff0c;MGF&#xff09;是概率統計中描述隨機變量分布特征的重要工具。MGF的主要用途是通過導數來計算隨機變量的矩&#xff08;比如均值、方差等&#xff09;&#xff0c;同時它…

React中的合成事件

合成事件與原生事件 區別&#xff1a; 1. 命名不一樣&#xff0c;原生用純小寫方式&#xff0c;react用小駝峰的方式 原生&#xff1a;onclick React的&#xff1a;onClick 2. 事件處理函數的寫法不一樣 原生的是傳入一個字符串&#xff0c;react寫法傳入一個回調函數 3.…

ajax與json

目錄 1、ajax1.1、什么是ajax1.2、ajax核心AJAX 工作原理示例代碼重要屬性和方法兼容性 1.3、jQuery ajax什么是jQuery ajaxjQuery AJAX 核心概念基本用法1. **使用 $.ajax() 方法**2. **使用簡化方法****使用 $.get() 方法****使用 $.post() 方法** 常用配置選項示例&#xff…

CSS——26. 偽元素2(“::before ,::after”)

::before偽類 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>偽元素</title><style type"text/css">div::before{content: "我最棒";}}</style></head><body><!--…

Openssl1.1.1s rpm包構建與升級

rpmbuild入門知識 openssh/ssl二進制升級 文章目錄 前言一、資源準備1.下載openssh、openssl二進制包2.安裝rpmbuild工具3.拷貝源碼包到SOURCES目錄下4.系統開啟telnet&#xff0c;防止意外導致shh無法連接5.編譯工具安裝6.補充說明 二、制作 OpenSSL RPM 包1.編寫 SPEC 文件2.…

patchwork++地面分割學習筆記

參考資料&#xff1a;古月居 - ROS機器人知識分享社區 https://zhuanlan.zhihu.com/p/644297447 patchwork算法一共包含四部分內容&#xff1a;提出了以下四個部分&#xff1a;RNR、RVPF、A-GLE 和 TGR。 1&#xff09;基于 3D LiDAR 反射模型的反射噪聲消除 (RNR)&#xff…

基于Spring Boot的海濱體育館管理系統的設計與實現

風定落花生&#xff0c;歌聲逐流水&#xff0c;大家好我是風歌&#xff0c;混跡在java圈的辛苦碼農。今天要和大家聊的是一款基于springboot的海濱體育館管理系統的設計與實現。項目源碼以及部署相關請聯系風歌&#xff0c;文末附上聯系信息 。 項目簡介&#xff1a; 寵物醫院…

通過Android Studio修改第三方jar包并重新生成jar包

最近接手了來自公司其他同事的一個Unity項目,里面有一個封裝的jar包要改動一下,無奈關于這個jar包的原工程文件丟失了,于是自己動手來修改下jar包,并做下記錄。 一、導入第三方jar包 1、新建項目EditJarDemo(項目名隨便取) 2、新建libs文件夾,把你要修改的third.jar 復制…

淺嘗Selenium自動化框架

淺嘗Selenium自動化框架 Selenium基本介紹Selenium原理Selenium學習要點寫個Selenium Demo結束 Selenium基本介紹 Selenium 是一個開源的自動化測試工具&#xff0c;只用于測試 Web 應用程序。它支持多種編程語言&#xff08;如 Java、Python、C# 等&#xff09;來編寫測試腳本…

計算機網絡之---物理層設備

什么是物理層設備 物理層設備是指負責數據在物理媒介上傳輸的硬件設備&#xff0c;它們主要處理數據的轉換、信號的傳輸與接收&#xff0c;而不涉及數據的內容或意義。常見的物理層設備包括網卡、集線器、光纖收發器、調制解調器等。 物理層設備有哪些 1、網卡&#xff08;N…

SQL中的數據庫對象

視圖&#xff1a;VIEW 概念 ① 虛擬表&#xff0c;本身不存儲數據&#xff0c;可以看做是存儲起來的SELECT語句 ② 視圖中SELECT語句中涉及到的表&#xff0c;稱為基表 ③ 針對視圖做DML操作&#xff0c;對影響到基表中的數據&#xff0c;反之亦然 ④ 創建、刪除視圖本身&#…

flink的EventTime和Watermark

時間機制 Flink中的時間機制主要用在判斷是否觸發時間窗口window的計算。 在Flink中有三種時間概念&#xff1a;ProcessTime、IngestionTime、EventTime。 ProcessTime&#xff1a;是在數據抵達算子產生的時間&#xff08;Flink默認使用ProcessTime&#xff09; IngestionT…

web服務器架構,websocket

1. 非前后端分離架構 1. 前端html后端servlet 被tomcat服務器打包&#xff0c;統一指定根目錄入口。通過原生表單發送到后端&#xff0c;后端根據請求數據進行重定向或請求轉發&#xff0c;這樣就不能進行動態渲染&#xff0c;也就必須存在很多靜態html對應每一個請求。 這里…

Ubuntu 下測試 NVME SSD 的讀寫速度

在 Ubuntu 系統下&#xff0c;測試 NVME SSD 的讀寫速度&#xff0c;有好多種方法&#xff0c;常用的有如下幾種&#xff1a; 1. Gnome-disks Gnome-disks&#xff08;也稱為“Disks”&#xff09;是 GNOME 桌面環境中的磁盤管理工具&#xff0c;有圖形界面&#xff0c;是測試…

SpringBoot之核心配置

學習目標&#xff1a; 1.熟悉Spring Boot全局配置文件的使用 2.掌握Spring Boot配置文件屬性值注入 3.熟悉Spring Boot自定義配置 4.掌握Profile多環境配置 5.了解隨機值設置以及參數間引用 1.全局配置文件 Spring Boot使用 application.properties 或者application.yaml 的文…

后端服務集成ElasticSearch搜索功能技術方案

文章目錄 一、為什么選用ElasticSearch二、ElasticSearch基本概念1、文檔和字段2、索引和映射3、倒排索引、文檔和詞條4、分詞器 三、ElasticSearch工作原理1、Term Dictionary、Term index2、Stored Fields3、Docs Values4、Segment5、Lucene6、高性能、高擴展性、高可用①高性…

舉例說明AI模型怎么聚類,最后神經網絡怎么保存

舉例說明怎么聚類,最后神經網絡怎么保存 目錄 舉例說明怎么聚類,最后神經網絡怎么保存K - Means聚類算法實現神經元特征聚類劃分成不同專家的原理和過程 特征提取: 首先,需要從神經元中提取有代表性的特征。例如,對于一個多層感知機(MLP)中的神經元,其權重向量可以作為特…

ocrmypdf使用時的cannot import name ‘PdfMatrix‘ from ‘pikepdf‘問題

最近在做pdf的ocr,之前使用過ocrmypdf&#xff0c;打算再次使用&#xff0c;發現它更新了&#xff0c;所以就打算使用最新版 環境&#xff1a;win11anaconda 創建虛擬環境后安裝語句&#xff1a; pip install ocrmypdf -i https://pypi.tuna.tsinghua.edu.cn/simple pip in…

【JavaEE進階】獲取Cookie/Session

&#x1f340;Cookie簡介 HTTP協議自身是屬于 "?狀態"協議. "?狀態"的含義指的是: 默認情況下 HTTP 協議的客?端和服務器之間的這次通信,和下次通信之間沒有直接的聯系.但是實際開發中,我們很多時候是需要知道請求之間的關聯關系的. 例如登陸?站成…

Oracle:ORA-00904: “10“: 標識符無效報錯詳解

1.報錯Oracle語句如下 SELECT YK_CKGY.ID,YK_CKGY.DJH,YK_CKGY.BLRQ,YK_CKGY.ZBRQ,YK_CKGY.SHRQ,YK_CKGY.YT,YK_CKGY.ZDR,YK_CKGY.SHR,YK_CKGY.BZ,YK_CKGY.JZRQ,YK_CKGY.ZT,YK_CKGY.CKLX,(case YK_CKGY.CKLXwhen 09 then藥房調借when 02 then科室退藥when 03 then損耗出庫when…