В настоящее время я подключаюсь к блокам данных с локальным кодом VS через соединение блоков данных. Но все мои заявки сопровождаются ошибкой «модуль не найден», что означает, что код в других python файлах не найден. Я пробовал:
Переместить код в папку с main.py
импортировать файл внутри функции, которая его использует
добавление файла через sparkContext.addPyFile
Есть ли у кого-нибудь опыт по этому поводу? Или даже лучший способ взаимодействия с блоками данных для python проектов.
Кажется, мой код python выполняется в локальном python env, только искра, связанная с директивой кода, находится в кластере, но кластер не загружает все мои файлы python. затем возникает ошибка.
У меня есть папка с файлами
main.py
lib222.py
__ init __. py
с классом Foo в lib222.py
основной код:
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
sc = spark.sparkContext
#sc.setLogLevel("INFO")
print("Testing addPyFile isolation")
sc.addPyFile("lib222.py")
from lib222 import Foo
print(sc.parallelize(range(10)).map(lambda i: Foo(2)).collect())
Но у меня возникла ошибка Module not find lib222.
Также, когда я печатаю python версию некоторой системной информации, кажется, что код python выполняется на моем локальном компьютере вместо удаленного драйвера. Моя версия db - 6.6. Подробная ошибка:
> Exception has occurred: Py4JJavaError
An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 6, 10.139.64.8, executor 0): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File "/databricks/spark/python/pyspark/serializers.py", line 182, in _read_with_length
return self.loads(obj)
File "/databricks/spark/python/pyspark/serializers.py", line 695, in loads
return pickle.loads(obj, encoding=encoding)
ModuleNotFoundError: No module named 'lib222'
>
>During handling of the above exception, another exception occurred:
>
>Traceback (most recent call last):
File "/databricks/spark/python/pyspark/worker.py", line 462, in main
func, profiler, deserializer, serializer = read_command(pickleSer, infile)
File "/databricks/spark/python/pyspark/worker.py", line 71, in read_command
command = serializer._read_with_length(file)
File "/databricks/spark/python/pyspark/serializers.py", line 185, in _read_with_length
raise SerializationError("Caused by " + traceback.format_exc())
pyspark.serializers.SerializationError: Caused by Traceback (most recent call last):
File "/databricks/spark/python/pyspark/serializers.py", line 182, in _read_with_length
return self.loads(obj)
File "/databricks/spark/python/pyspark/serializers.py", line 695, in loads
return pickle.loads(obj, encoding=encoding)
ModuleNotFoundError: No module named 'lib222```