首页 > 编程问答 >需要在 Windows 10 上安装 Pyspark 的帮助

需要在 Windows 10 上安装 Pyspark 的帮助

时间:2024-07-28 08:25:52浏览次数:11  
标签:python apache-spark pyspark apache-spark-sql

我正在尝试在我的笔记本电脑上安装 Pyspark 并按照 https://medium.com/@deepaksrawat1906/a-step-by-step-guide-to-installing-pyspark-on-windows 完成所有步骤-3589f0139a30

https://phoenixnap.com/kb/install-spark-on-windows-10

当我去设置我的 Spark 会话时:

from pyspark.sql import SparkSession

spark = SparkSession.builder.master("local").appName("PySpark Installation 
Test").getOrCreate()
df = spark.createDataFrame([(1, "Hello"), (2, "World")], ["id", "message"])
df.show()

我收到此错误消息:

---------------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call last)
Cell In[3], line 6
      1 from pyspark.sql import SparkSession
      3 spark = SparkSession.builder \
      4     .master("local[*]") \
      5     .appName("YourAppName") \
----> 6     .getOrCreate()

File C:\spark\spark-3.4.3-bin-hadoop3\python\pyspark\sql\session.py:477, in SparkSession.Builder.getOrCreate(self)
    475     sparkConf.set(key, value)
    476 # This SparkContext may be an existing one.
--> 477 sc = SparkContext.getOrCreate(sparkConf)
    478 # Do not update `SparkConf` for existing `SparkContext`, as it's shared
    479 # by all sessions.
    480 session = SparkSession(sc, options=self._options)

File C:\spark\spark-3.4.3-bin-hadoop3\python\pyspark\context.py:512, in SparkContext.getOrCreate(cls, conf)
    510 with SparkContext._lock:
    511     if SparkContext._active_spark_context is None:
--> 512         SparkContext(conf=conf or SparkConf())
    513     assert SparkContext._active_spark_context is not None
    514     return SparkContext._active_spark_context

File C:\spark\spark-3.4.3-bin-hadoop3\python\pyspark\context.py:200, in SparkContext.__init__(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, gateway, jsc, profiler_cls, udf_profiler_cls, memory_profiler_cls)
    198 SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
    199 try:
--> 200     self._do_init(
    201         master,
    202         appName,
    203         sparkHome,
    204         pyFiles,
    205         environment,
    206         batchSize,
    207         serializer,
    208         conf,
    209         jsc,
    210         profiler_cls,
    211         udf_profiler_cls,
    212         memory_profiler_cls,
    213     )
    214 except BaseException:
    215     # If an error occurs, clean up in order to allow future SparkContext creation:
    216     self.stop()

File C:\spark\spark-3.4.3-bin-hadoop3\python\pyspark\context.py:287, in SparkContext._do_init(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, jsc, profiler_cls, udf_profiler_cls, memory_profiler_cls)
    284 self.environment["PYTHONHASHSEED"] = os.environ.get("PYTHONHASHSEED", "0")
    286 # Create the Java SparkContext through Py4J
--> 287 self._jsc = jsc or self._initialize_context(self._conf._jconf)
    288 # Reset the SparkConf to the one actually used by the SparkContext in JVM.
    289 self._conf = SparkConf(_jconf=self._jsc.sc().conf())

File C:\spark\spark-3.4.3-bin-hadoop3\python\pyspark\context.py:417, in SparkContext._initialize_context(self, jconf)
    413 """
    414 Initialize SparkContext in function to allow subclass specific initialization
    415 """
    416 assert self._jvm is not None
--> 417 return self._jvm.JavaSparkContext(jconf)

File C:\spark\spark-3.4.3-bin-hadoop3\python\lib\py4j-0.10.9.7-src.zip\py4j\java_gateway.py:1587, in JavaClass.__call__(self, *args)
   1581 command = proto.CONSTRUCTOR_COMMAND_NAME +\
   1582     self._command_header +\
   1583     args_command +\
   1584     proto.END_COMMAND_PART
   1586 answer = self._gateway_client.send_command(command)
-> 1587 return_value = get_return_value(
   1588     answer, self._gateway_client, None, self._fqn)
   1590 for temp_arg in temp_args:
   1591     if hasattr(temp_arg, "_detach"):

File C:\spark\spark-3.4.3-bin-hadoop3\python\lib\py4j-0.10.9.7-src.zip\py4j\protocol.py:326, in get_return_value(answer, gateway_client, target_id, name)
    324 value = OUTPUT_CONVERTER[type](answer[2:], gateway_client)
    325 if answer[1] == REFERENCE_TYPE:
--> 326     raise Py4JJavaError(
    327         "An error occurred while calling {0}{1}{2}.\n".
    328         format(target_id, ".", name), value)
    329 else:
    330     raise Py4JError(
    331         "An error occurred while calling {0}{1}{2}. Trace:\n{3}\n".
    332         format(target_id, ".", name, value))

Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.lang.ExceptionInInitializerError
    at org.apache.spark.unsafe.array.ByteArrayMethods.<clinit>(ByteArrayMethods.java:52)
    at org.apache.spark.memory.MemoryManager.defaultPageSizeBytes$lzycompute(MemoryManager.scala:261)
    at org.apache.spark.memory.MemoryManager.defaultPageSizeBytes(MemoryManager.scala:251)
    at org.apache.spark.memory.MemoryManager.$anonfun$pageSizeBytes$1(MemoryManager.scala:270)
    at scala.runtime.java8.JFunction0$mcJ$sp.apply(JFunction0$mcJ$sp.java:23)
    at scala.Option.getOrElse(Option.scala:189)
    at org.apache.spark.memory.MemoryManager.<init>(MemoryManager.scala:270)
    at org.apache.spark.memory.UnifiedMemoryManager.<init>(UnifiedMemoryManager.scala:58)
    at org.apache.spark.memory.UnifiedMemoryManager$.apply(UnifiedMemoryManager.scala:207)
    at org.apache.spark.SparkEnv$.create(SparkEnv.scala:325)
    at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:196)
    at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:279)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:464)
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
    at 

java .base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) 在 java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) 在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247) 在 py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374) 在 py4j.Gateway.invoke(Gateway.java:238) 在 py4j.commands.ConstructorCommand.invokeConstructor (ConstructorCommand.java:80) 在 py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69) 在 py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182) 在 py4j.ClientServerConnection.run(ClientServerConnection.java:106) 在 java.base/java.lang.Thread.run(Thread.java:1570) 引起原因:java.lang.IllegalStateException:java.lang.NoSuchMethodException: java.nio.DirectByteBuffer.(long,int) 在 org.apache.spark.unsafe.Platform。(Platform.java:113) ... 25 更多 引起原因:java.lang.NoSuchMethodException:java.nio.DirectByteBuffer.(long,int) 在 java.base/java.lang.Class.getConstructor0(Class.java:3784) 在 java.base/java.lang.Class.getDeclaredConstructor(Class.java:2955) 在 org.apache.spark.unsafe.Platform。(Platform.java:71) ... 25 更多

谁能帮我解决这个问题? 谢谢


这个错误信息表明 Spark 无法在你的系统中分配内存,因为它找不到一个特定版本的 java.nio.DirectByteBuffer 构造函数。 这可能是由 Java 版本不兼容引起的。Spark 3.4.x 需要 Java 11。

以下是解决此问题的步骤:

  1. 检查你的 Java 版本 :
  2. 打开命令提示符并运行 java -version
  3. 确保你安装了 Java 11(不是更高版本)。如果你没有安装正确的版本,请从 Oracle 网站下载并安装: https://www.oracle.com/java/technologies/downloads/

  4. 设置 JAVA_HOME 环境变量 :

  5. 如果还没有设置,你需要设置 JAVA_HOME 环境变量,使其指向你的 Java 11 安装目录。
  6. 在 Windows 搜索栏中搜索 "编辑系统环境变量" 并打开它。
  7. 点击 "环境变量..." 按钮。
  8. 在 "系统变量" 部分,点击 "新建..."。
  9. 输入 "JAVA_HOME" 作为变量名,并输入你的 Java 11 JDK 安装目录的路径(例如,"C:\Program Files\Java\jdk-11.0.18")作为变量值。
  10. 点击 "确定" 保存所有更改。

  11. 更新 Spark 配置 :

  12. 打开 spark-defaults.conf 文件,该文件位于你的 Spark 安装目录的 conf 文件夹中(例如, C:\spark\spark-3.4.3-bin-hadoop3\conf )。
  13. 在文件末尾添加以下行: spark.driver.extraJavaOptions -Djdk.nio.maxCachedBufferSize=262144
  14. 保存并关闭 spark-defaults.conf 文件。

  15. 重启你的系统 : 为了确保环境变量更改生效,最好重启你的电脑。

  16. 再次尝试运行你的 PySpark 代码 : 重启后,尝试再次运行你的 PySpark 代码。应该可以正常工作了。

如果问题仍然存在,请尝试以下操作:

  • 确保你的 PATH 环境变量包含 Java bin 目录的路径。
  • 尝试使用较旧版本的 Spark(例如,3.2.x),它可能与你当前的 Java 版本更兼容。

通过这些步骤,你应该能够解决这个问题并成功运行你的 PySpark 代码。

标签:python,apache-spark,pyspark,apache-spark-sql
From: 78802710

相关文章

  • 有没有办法在Python中使用OpenCV在边界框后面画一条线?
    我正在为我的本科论文编写一个应用程序,该应用程序从根本上允许使用OpenCV库跟踪视频源中的多个对象。为了进一步发展这个想法,我希望能够在屏幕上画一条线,显示边界框在我正在跟踪的对象周围的历史记录。我注意到没有排序用于执行此操作的内置函数,因此任何有关制作此类内容的......
  • 如何向 python pandas 数据透视表添加过滤器? (pd.read_excel)
    我正在尝试使用pandas库在python中重新创建我在Excel中制作的数据透视表。我试图用时间段作为过滤器来总结超过500k行的OD总行程数据。在Excel上,我只会执行行(O)、列(D)、值(行程)、过滤器(时间)。到目前为止,在python上我只有索引、列、值、aggfunc,但我不知道如何过滤。有......
  • 标量添加中的 Python 溢出警告
    我想执行一个简单的操作:b+g+rb,g,r变量是整数并且值低于256。我收到溢出警告和错误的结果。问题是操作很简单(结果不高于765),我不应该收到溢出警告这是我的代码:importcv2ascvimportnumpyasnpimgname='r_hh_classic.png'img=cv.imread(imgname)h,w,_=......
  • 在 Python 中读取部分 MP3 文件时处理“对于可用位计数来说太大”错误
    我正在尝试读取MP3文件的特定部分,但遇到错误:[src/libmpg123/layer3.c:INT123_do_layer3():1771]error:part2_3_length(1376)toolargeforavailablebitcount(760)可以访问音频文件此处我的环境是使用此Docker映像设置的:pytorc......
  • Python SQLAlchemy 2.0 使用 dataclass_transform 非必需字段类型
    我刚刚在一个新项目上安装了SQLAlchemy2.0,我正在尝试使我的模型尽可能类型安全。通过使用@typing_extensions.dataclass_transform,我已经能够实现我想要实现的大部分目标类型检查,但是当前所有字段都被标记为不需要。例如:@typing_extensions.dataclass_tran......
  • 当读取字节时,Python 将 \n 解释为 0xd0
    换行符被解释为Ð(0xd0)而不是(0x0a),我真的不知道如何解决这个问题。我也不知道从哪里开始。当尝试使用此代码时,它将0x0a读为0xd0。withopen(path,"rb")asroot:b_arr=root.read()+b""print("Processing...")buffer=""b_arr......
  • 在Python 3中获取范围的特定形式
    当获取range(1,100)时,我得到:[1,2,3,4,5...99]我需要像这个范围的zip之类的东西:[50,49,51,48,52,47,53...99]如何获取它?背景:这都是关于比特币谜题66的。首先我做了对过去已知的私钥进行线性回归预测,直到第65题为止。我......
  • Python:如何使用pyaudio或sounddevice等库进行自动录音?
    我想做一个项目,需要满足以下录音要求:程序启动后,会在后台不断检测麦克风的声音,当声音分贝大于一定值时打开录音流级别,当分贝低于一定级别时关闭录音流并保存为wav文件。我知道原理,但我无法使用这些库来实现。我想实现以上结果使用Python实现自动录音以下代......
  • 当我们创建一个在 https 服务器上获取和发送数据的 python 应用程序时,我们应该如何处
    python脚本使用Urllib3,我的服务器是在Node.js上编写的脚本。我担心(并且不清楚)证书:我是否需要将我的python应用程序上的证书另存为变量?例如我这样做了,http=urllib3.PoolManager(cert_reqs="CERT_REQUIRED",ca_certs='client-cert.pem')并且我不知道......
  • 使用 Python 进行 Web 抓取以获取数据 NoneType ERROR
    我正在努力为我的学校项目获取美元和价格。所以我决定为此使用网络抓取,但我有一个问题。当我尝试在服务器上使用我的代码时,它给我NoneType错误。它可以在googlecolab上使用,但我无法在我的电脑或服务器上使用。我该如何解决这个问题?网页抓取代码;defdolar():he......