[英]PySpark: "/usr/libexec/java_home/bin/java: Not a directory" (macOS Big Sur)
我正在嘗試運行 hello-world PySpark 應用程序。
我正在使用 PyCharm
我的LOL.py
腳本代碼:
import os
os.environ["SPARK_HOME"] = "/opt/spark"
from pyspark.sql import SparkSession
def init_spark():
spark = SparkSession.builder.appName("HelloWorld").getOrCreate()
sc = spark.sparkContext
return spark,sc
def main():
spark,sc = init_spark()
nums = sc.parallelize([1,2,3,4])
print(nums.map(lambda x: x*x).collect())
if __name__ == '__main__':
main()
輸出:
/opt/spark/bin/spark-class: line 71: /usr/libexec/java_home/bin/java: Not a directory
Traceback (most recent call last):
File "/Users/evgenii/PycharmProjects/bi-etl-orders/LOL.py", line 19, in <module>
main()
File "/Users/evgenii/PycharmProjects/bi-etl-orders/LOL.py", line 13, in main
spark,sc = init_spark()
File "/Users/evgenii/PycharmProjects/bi-etl-orders/LOL.py", line 8, in init_spark
spark = SparkSession.builder.appName("HelloWorld").getOrCreate()
File "/Users/evgenii/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pyspark/sql/session.py", line 173, in getOrCreate
sc = SparkContext.getOrCreate(sparkConf)
File "/Users/evgenii/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pyspark/context.py", line 349, in getOrCreate
SparkContext(conf=conf or SparkConf())
File "/Users/evgenii/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pyspark/context.py", line 115, in __init__
SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
File "/Users/evgenii/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pyspark/context.py", line 298, in _ensure_initialized
SparkContext._gateway = gateway or launch_gateway(conf)
File "/Users/evgenii/.pyenv/versions/3.7.5/lib/python3.7/site-packages/pyspark/java_gateway.py", line 94, in launch_gateway
raise Exception("Java gateway process exited before sending its port number")
Exception: Java gateway process exited before sending its port number
我知道“ Java 網關進程在發送其端口號之前退出”通常是由於 JAVA_HOME 設置不正確而引發的。
但我認為事實並非如此,因為我的 JAVA_HOME 看起來很正常:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
這是我的 SPARK_HOME:
$ echo $SPARK_HOME
/opt/spark
我的環境:
我閱讀了幾個相關的指南,但目前都沒有幫助。 我將不勝感激任何幫助。 先感謝您!
Spark 2.4.0 將需要 Java 8,你的系統上有它,但看起來 PyCharm 沒有使用這個版本,即使可用。 我在 Eclipse 上遇到了類似的問題,它默認為 Java 的最后一個版本,這產生了兼容性問題,我懷疑在您的應用程序中。
你是從 PyCharm 運行你的應用程序嗎? 如果是這樣,您可以從那里顯示環境值嗎?
你是如何安裝 Spark 的? 您提到了 Java 的 brew,您是否也將 brew 用於 Spark? 如果沒有,也許值得一試,因為依賴關系真的很棘手。
在 shell 中運行java -version
會發生什么? 您可以嘗試卸載 Java 11 並重新安裝 Java 8 嗎?
我希望這幾條建議能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.