gpt4 book ai didi

python - 如何找到当前 spark 上下文中加载的所有文本文件?

转载 作者:可可西里 更新时间:2023-11-01 16:35:05 26 4
gpt4 key购买 nike

例如,当我在 Spark Shell 中使用 PySpark 时,我可能会使用以下命令将文件加载到 spark 上下文中:

readme = sc.textFile("/home/data/README.md")

然后我可以像下面这样对这个 RDD(?) 执行操作来计算文件中的行数:

readme.count() 

但是我想知道的是,我如何才能获得已加载到 sc 中的所有 sc.textFile(s) 的列表(spark 上下文)?

例如,下面有一些命令可以获取所有配置,但它没有列出我加载的所有文本文件。

sc._conf.getAll() 

有什么方法可以找到所有已加载到 spark 上下文中的文本文件吗?列表?

最佳答案

SparkContext.textFile 不在 Spark 上下文中存储任何内容。看看 sources

  /**
* Read a text file from HDFS, a local file system (available on all nodes), or any
* Hadoop-supported file system URI, and return it as an RDD of Strings.
* The text files must be encoded as UTF-8.
*

您始终可以缓存 RDD,以便将它们保存在内存中。这post解释缓存机制。

如果你想跟踪你的 spark 作业中的文件,spark-submit 提供了 --files 标志来将文件上传到执行目录。如果您有不会更改的小文件。

如果您添加外部文件,spark-submit 会提供--files 标志

spark-submit --files 您的文件将上传到此 HDFS 文件夹:hdfs://your-cluster/user/your-user/.sparkStaging/application_1449220589084_0508

application_1449220589084_0508 是 yarn 应用程序 ID 的示例!

在您的 spark 应用程序中,您可以通过两种方式找到您的文件:

1- 通过下面的代码找到 spark 暂存目录:(但你需要有 hdfs uri 和你的用户名)

System.getenv("SPARK_YARN_STAGING_DIR"); 

.sparkStaging/application_1449220589084_0508

2- 使用以下命令找到完整的逗号分隔文件路径:

System.getenv("SPARK_YARN_CACHE_FILES"); 

hdfs://yourcluster/user/hdfs/.sparkStaging/application_1449220589084_0508/spark-assembly-1.4.1.2.3.2.0-2950-hadoop2.7.1.2.3.2.0-2950.jar#spark.jar,hdfs://yourcluster/user/hdfs/.sparkStaging/application_1449220589084_0508/your-spark-job.jar#app.jar,hdfs://yourcluster/user/hdfs/.sparkStaging/application_1449220589084_0508/test_file.txt#test_file.txt

关于python - 如何找到当前 spark 上下文中加载的所有文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56202121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com