在 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

未找到 AWS EMR s3a 文件系统

AWS EMR 火花提交选项 - 失败

AWS EMR 上的持续集成

如何为Amazon EMR生成trustedCertificates.pem和certificateChain.pem文件?

从 Hadoop 1.0.3 中 AWS EMR 上的 HDFS 清除数据