如何从 PySpark 应用程序读取 --pyfiles 提交的 zip
How to read zip submitted by --pyfiles from PySpark application
我有以下文件夹结构。我将 source
文件夹和 运行 spark-submit
与 source.zip
压缩为 --py-files
。我的问题是,如何从 PySpark 应用程序读取 config.hcl
文件?我试过 SparkFiles.getRootDirectory()+'/source/config.hcl'
但没有用。错误说没有这样的文件或目录。非常感谢您的帮助。我正在尝试从 app.py
读取 config.hcl
。我如何在 zip 中引用它?或者如何先解压?
source
| config.hcl
app.py.
您无法读取 config.hcl
文件的主要原因有两个:
- 当上传 zip 文件并通过
--py-files
提交时,包保留在 zip 文件中而不提取(例如 /private/var/folders/81/c3fgx2qx6nq3lh2v983cdcd80000gn/T/spark-043999a0-c7fb-409c-a95d-4b8a902e55f0/userFiles-c3301b1a-b47e-4411-a2e9-ef0d8c2dc347/a.zip
)
- 因为如果(1),你读
config.hcl
的方式有点不同,你需要用ZipFile来读
我创建了一个具有以下结构的测试文件a.zip
├── a
│ ├── __init__.py
│ ├── a.py
│ └── a.txt
# __init__.py
from .a import *
# a.py
from os import path
from zipfile import ZipFile
def test():
zip = ZipFile(path.dirname(path.dirname(path.abspath(__file__))))
with zip.open('a/a.txt') as f:
print(f.readlines())
# a.txt
'Hello World'
# spark-submit --py-files a.zip ...
import a
a.test()
# 'Hello World'
我有以下文件夹结构。我将 source
文件夹和 运行 spark-submit
与 source.zip
压缩为 --py-files
。我的问题是,如何从 PySpark 应用程序读取 config.hcl
文件?我试过 SparkFiles.getRootDirectory()+'/source/config.hcl'
但没有用。错误说没有这样的文件或目录。非常感谢您的帮助。我正在尝试从 app.py
读取 config.hcl
。我如何在 zip 中引用它?或者如何先解压?
source
| config.hcl
app.py.
您无法读取 config.hcl
文件的主要原因有两个:
- 当上传 zip 文件并通过
--py-files
提交时,包保留在 zip 文件中而不提取(例如/private/var/folders/81/c3fgx2qx6nq3lh2v983cdcd80000gn/T/spark-043999a0-c7fb-409c-a95d-4b8a902e55f0/userFiles-c3301b1a-b47e-4411-a2e9-ef0d8c2dc347/a.zip
) - 因为如果(1),你读
config.hcl
的方式有点不同,你需要用ZipFile来读
我创建了一个具有以下结构的测试文件a.zip
├── a
│ ├── __init__.py
│ ├── a.py
│ └── a.txt
# __init__.py
from .a import *
# a.py
from os import path
from zipfile import ZipFile
def test():
zip = ZipFile(path.dirname(path.dirname(path.abspath(__file__))))
with zip.open('a/a.txt') as f:
print(f.readlines())
# a.txt
'Hello World'
# spark-submit --py-files a.zip ...
import a
a.test()
# 'Hello World'