在 AWS EMR 上的 zip 文件中提交 pyspark 支持 sql 文件
Posted
技术标签:
【中文标题】在 AWS EMR 上的 zip 文件中提交 pyspark 支持 sql 文件【英文标题】:Submitting pyspark supporting sql files inside zip file on AWS EMR 【发布时间】:2019-10-23 16:09:10 【问题描述】:我希望在 Amazon EMR 上的 pyspark 应用程序中引用在 S3 上另存为 .zip 的非 Python 文件(例如 SQL、config、txt)。我试过--py-files,但这只适用于我的python文件。我仍然无法在 Amazon EMR 中使用来自 S3 的压缩 SQL/配置文件。有人对此有任何解决方案吗?
【问题讨论】:
【参考方案1】:您正在寻找的标志--archives
。基本上你给它一个 zip 文件,它会将它解压到每个纱线容器正在执行的目录中。你应该能够使用脚本中的相对路径访问它们。
您还可以通过在末尾添加 #name
来控制您的 zip 解压缩到的文件夹的名称。例如--archives s3://aaa/some.zip#files
。 Spark 在这里只是顺便提到了这一点:
https://spark.apache.org/docs/latest/running-on-yarn.html#important-notes
需要注意的一点是,如果您使用 --deploy-mode client
运行您的驱动程序,那么您的驱动程序没有运行纱线容器,因此将无法访问文件。您将改为使用--deploy-mode cluster
。
【讨论】:
谢谢!我看到正在使用 --archives 将 .zip 文件添加到集群中。我仍然无法找到这些文件所在的相对路径。如果我使用此代码 sc.textFile("sql.zip/some_sql.sql") 这里合适的路径是什么。再次感谢。 如果您要使用sc.textFile
加载,那么只需将它们留在 S3 上并从那里加载它们。如果您想使用诸如open
之类的python 方法进行加载, --archives 很有用。但是,如果这适用于您的用例,您最好使用标准 spark 方法读取方法和广播。
@RyanWidmaier 可以将这个解决方案应用到这个顺丰***.com/questions/61619318/…
也许,我会在那里发表评论。以上是关于在 AWS EMR 上的 zip 文件中提交 pyspark 支持 sql 文件的主要内容,如果未能解决你的问题,请参考以下文章
toPandas() 在 Jupyter iPython Notebook 上工作,但提交失败 - AWS EMR
如何为Amazon EMR生成trustedCertificates.pem和certificateChain.pem文件?