VS Code:“打开文件夹”让我的 PySpark 不起作用?

时间:2021-04-14 17:56:37

标签: python apache-spark visual-studio-code pyspark anaconda

我在 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
  • Path=(other stuff);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=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)

我在 VS Code 中使用“打开文件夹”打开的文件夹位于包含空格的 UNC 路径上(即 \\blablabla\bla\my 文件夹)。

0 个答案:

没有答案