python - VS Code:“打开文件夹”让我的 PySpark 无法工作?
问题描述
我在 Windows 10 x64 上使用 Anaconda。我正在使用 VS 代码。最近我成功运行了以下内容:
(我)
import pyspark
from pyspark.sql import SparkSession
spark=SparkSession.builder.master("local[1]").appName("local").getOrCreate()
rdd=spark.sparkContext.parallelize([1,2,3,4,56])
print(rdd.count())
然后我单击文件->打开文件夹并打开一个文件夹,所以现在它出现在我屏幕左侧的窗格中。问题1: 这是做什么的?我曾经认为这只是查看一些常用文件的快捷方式。
现在我的文件夹在我的左侧窗格中,上面的代码错误(见下文),错误包含短语Python worker failed to connect back.
. 问题2:为什么会发生这种情况?
问题#3:如果我希望在 VS Code 中打开文件夹的同时能够避免上述错误,我应该怎么做?关于我应该查看哪些设置的任何想法?
如果我关闭该文件夹,我的代码将再次运行。
-------------------------------------------------- -------------------------------------------------- -------------------------------------
错误:每次它给我一个稍微不同的错误,但它总是以这样的开头:
Py4JJavaError Traceback (most recent call last)
\\pathtomyfile\temp.py in
----> 240 spark.createDataFrame(pandas_df).toDF(*columns).show()
C:\Spark\spark-3.1.1-bin-hadoop2.7\python\pyspark\sql\dataframe.py in show(self, n, truncate, vertical)
482 """
483 if isinstance(truncate, bool) and truncate:
--> 484 print(self._jdf.showString(n, 20, vertical))
485 else:
486 print(self._jdf.showString(n, int(truncate), vertical))
C:\Spark\spark-3.1.1-bin-hadoop2.7\python\lib\py4j-0.10.9-src.zip\py4j\java_gateway.py in __call__(self, *args)
1302
1303 answer = self.gateway_client.send_command(command)
-> 1304 return_value = get_return_value(
1305 answer, self.gateway_client, self.target_id, self.name)
1306
C:\Spark\spark-3.1.1-bin-hadoop2.7\python\pyspark\sql\utils.py in deco(*a, **kw)
109 def deco(*a, **kw):
110 try:
--> 111 return f(*a, **kw)
112 except py4j.protocol.Py4JJavaError as e:
113 converted = convert_exception(e.java_exception)
C:\Spark\spark-3.1.1-bin-hadoop2.7\python\lib\py4j-0.10.9-src.zip\py4j\protocol.py 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)
Py4JJavaError: An error occurred while calling o77.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 3.0 failed 1 times, most recent failure: Lost task 0.0 in stage 3.0 (TID 3) (blablabla executor driver): org.apache.spark.SparkException: Python worker failed to connect back.
<a bunch more stuff after that>
(它总是“阶段 x 中的任务 0 失败 y 次”,但 x 并不总是 3,y 并不总是 1。)
-------------------------------------------------- -------------------------------------------------- -------------------------------------
其他结果:如果我运行以下命令,我会收到类似的错误:
(二)
import pandas as pd
import numpy as np
from pyspark.sql import SparkSession
spark=SparkSession.builder.master("local[1]").appName("local").getOrCreate()
pandas_df = pd.DataFrame(np.random.randint(0,100, size=(5,5)))
columns = ["col"+str(i) for i in range(5)]
print(columns)
display(pandas_df.head())
spark.createDataFrame(pandas_df).toDF(*columns).show()
如果我运行以下命令,我不会收到错误消息:
(三)
from pyspark.sql import SparkSession
spark=SparkSession.builder.master("local[1]").appName("local").getOrCreate()
rocks = spark.read.format("csv").option("header", "true").load("C:\\rocksamples.csv")
rocks.show(10)
此外,如果我从我打开的文件夹中的 .ipynb 文件运行它,上述三个代码块(I、II、III)都不会出错。
-------------------------------------------------- -------------------------------------------------- -------------------------------------
背景:我的机器上有以下文件和文件夹:
- Anaconda 目录:C:\users\me\Anaconda3
- Spark目录:C:\Spark\spark-3.1.1-bin-hadoop2.7
- Java目录:C:\Spark\java\jre1.8.0_231
- 在 C:\users\me\Anaconda3\Lib\site-packages 中没有什么叫 pyspark
- C:\rocksamples.csv 中的 .csv 文件
- C:\Hadoop\bin\winutils.exe 中的 Winutils 文件
我当前的环境变量(我想清理但现在我害怕)包括以下内容:
- HADOOP_HOME=C:\Hadoop
- JAVA_HOME=C:\Spark\java\jre1.8.0_231
- 路径=(其他东西);C:\Spark\spark-3.1.1-bin-hadoop2.7\bin;C:\Spark\java\jre1.8.0_231\bin
- PYSPARK_DRIVER_PYTHON=jupyter
- PYSPARK_DRIVER_PYTHON_OPTS=笔记本
- PYSPARK_PYTHON=蟒蛇
- PYTHONPATH=C:\Spark\spark-3.1.1-bin-hadoop2.7\python
- SPARK_HOME=C:\Spark\spark-3.1.1-bin-hadoop2.7
我认为 Python 正在寻找正确的 PySpark,因为如果我尝试from pyspark import this_does_not_exist
我会得到 ImportError: cannot import name 'this_does_not_exist' from 'pyspark' (C:\Spark\spark-3.1.1-bin-hadoop2.7\python\pyspark\__init__.py)
.
</p>
我在 VS Code 中使用“打开文件夹”打开的文件夹位于包含空格的 UNC 路径上(即 \\blablabla\bla\my 文件夹)。
解决方案
推荐阅读
- python - 实体框架:仅当所有对象都存在时才更新多个对象
- javascript - 在单击按钮的情况下执行方法
- python-3.x - Python 映射列表乱序返回字典
- javascript - 用打字稿和角度对父母和孩子进行排序
- android - 根据屏幕密度分离 Jetpack 可组合功能
- vue.js - 覆盖 Vuetify 变量
- node.js - 为什么 api 调用需要很长时间才能响应?通过邮递员调用相同的 api url 立即给出结果
- google-apps-script - Google Apps 脚本从 Stripe 接收 webhook,未能提取部分接收到的事件信息
- rust - 使用类似“复制”的语义在可变引用上创建包装器
- c# - 如何使用 CsvHelper 正确映射集合