我是火花的新手,我的理解是:
- jars 就像一堆 java 代碼檔案
- 我安裝的每個內部使用 spark(或 pyspark)的庫都有自己的 jar 檔案,驅動程式和執行程式都需要使用這些檔案,以便它們執行用戶與之互動的包 API 呼叫。這些 jar 檔案就像那些 API 呼叫的后端代碼
問題:
- 為什么需要這些 jar 檔案。為什么在 python 中擁有所有代碼還不夠?(我想答案是最初的 Spark 是用 Scala 撰寫的,它在那里將它的依賴項分發為 jars。所以不必再次創建那個代碼庫山,python 庫只是通過一些轉換 java 代碼的轉換器在 python 解釋器中呼叫該 javacode到等效的python代碼。請如果我理解正確)
- 您在通過
spark.driver.extraClassPath和創建 spark 背景關系時指定這些 jar 檔案位置spark.executor.extraClassPath。雖然我猜這些是過時的引數。最近指定這些 jar 檔案位置的方法是什么? - 我在哪里可以找到我安裝的每個庫的這些 jars?例如突觸。關于包的 jar 檔案所在位置的一般想法是什么?為什么這些庫不明確它們的特定 jar 檔案將在哪里?
我知道我在這里可能沒有意義,我上面提到的部分只是我的預感,那就是它必須發生的方式。
那么,你能幫我理解罐子的整個業務以及如何找到和指定它們嗎?
uj5u.com熱心網友回復:
我安裝的每個內部使用 spark(或 pyspark)的庫都有自己的 jar 檔案
你能告訴你要安裝哪個庫嗎?
是的,即使您使用 python 撰寫代碼,外部庫也可以有 jar。
為什么 ?
這些庫必須使用一些 UDF(用戶定義函式)。Spark 在 java 運行時運行代碼。如果這些 UDF 是用 python 撰寫的,那么由于將資料轉換為 python 可讀的東西,將會有很多序列化和反序列化的時間。
Java 和 Scala UDF 通常更快,這就是為什么某些庫附帶 jar 的原因。
為什么在 python 中擁有所有代碼還不夠?
同樣的原因,scala/java UDF 比 python UDF 更快。
最近指定這些 jar 檔案位置的方法是什么?
您可以使用spark.jars.packages財產。它將復制到驅動程式和執行程式。
我在哪里可以找到我安裝的每個庫的這些 jars?例如突觸。關于包的 jar 檔案所在位置的一般想法是什么?
https://github.com/microsoft/SynapseML#python
他們在這里提到需要什么罐子,即 com.microsoft.azure:synapseml_2.12:0.9.4
import pyspark
spark = pyspark.sql.SparkSession.builder.appName("MyApp") \
.config("spark.jars.packages", "com.microsoft.azure:synapseml_2.12:0.9.4") \
.config("spark.jars.repositories", "https://mmlspark.azureedge.net/maven") \
.getOrCreate()
import synapse.ml
你可以試試上面的代碼片段嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/378883.html
