【问题标题】:How to read zip submitted by --pyfiles from PySpark application如何从 PySpark 应用程序中读取 --pyfiles 提交的 zip
【发布时间】:2021-05-14 14:09:08
【问题描述】:

我有以下文件夹结构。我压缩了source 文件夹并运行spark-submitsource.zip 作为--py-files。我的问题是,如何从 PySpark 应用程序中读取 config.hcl 文件?我试过SparkFiles.getRootDirectory()+'/source/config.hcl',但没用。错误说没有这样的文件或目录。非常感谢您的帮助。我正在尝试从app.py 读取config.hcl。我如何在 zip 中引用它?或者如何先解压?

source
  | config.hcl
app.py. 

【问题讨论】:

    标签: python apache-spark pyspark path operating-system


    【解决方案1】:

    您无法读取config.hcl 文件的主要原因有两个:

    1. 上传 zip 文件并通过 --py-files 提交时,包仍保留在 zip 文件中而不提取(例如 /private/var/folders/81/c3fgx2qx6nq3lh2v983cdcd80000gn/T/spark-043999a0-c7fb-409c-a95d-4b8a902e55f0/userFiles-c3301b1a-b47e-4411-a2e9-ef0d8c2dc347/a.zip
    2. 因为 if (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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 2017-11-27
      相关资源
      最近更新 更多