python - 如何找到当前 spark 上下文中加载的所有 textFile(s)?
问题描述
例如,当我在使用 PySpark 的 Spark Shell 中时,我可能会使用以下命令将文件加载到 spark 上下文中:
readme = sc.textFile("/home/data/README.md")
然后我可以对这个 RDD(?) 执行如下操作来计算文件中的行数:
readme.count()
但是我想知道的是,如何获取sc.textFile(s)
已加载到sc
(火花上下文)中的所有内容的列表?
例如,下面有一些命令可以获取所有配置,但它没有列出我加载的所有文本文件。
sc._conf.getAll()
有没有办法找到所有已加载到 spark 上下文中的 textFiles?上市?
解决方案
SparkContext.textFile 不会在 Spark 上下文中存储任何内容。看看来源
/**
* 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,以便将它们保存在内存中。这篇文章解释了缓存机制。
如果您想跟踪 spark 作业中的文件,spark-submit 提供了--files
将文件上传到执行目录的标志。如果您有不会更改的小文件。
如果添加外部文件, spark-submit 会提供--files
标志
spark-submit --files
您的文件将上传到此 HDFS 文件夹:hdfs://your-cluster/user/your-user/.sparkStaging/application_1449220589084_0508
application_1449220589084_0508 是纱线应用程序 ID 的示例!
在您的 spark 应用程序中,您可以通过 2 种方式找到您的文件:
1-通过以下代码找到 spark staging 目录:(但您需要拥有 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
推荐阅读
- paypal - PayPal API V2 创建发票错误响应/状态代码
- javascript - 在javascript实时计时器上添加2位数字
- python - 如何从某个特定列中的所有唯一值创建新的数据框列?
- java - 如何在 android 中以编程方式设置 AppCompatImageView 的高度和宽度?
- octobercms - 在特定文件夹中打开媒体浏览器十月 CSM 构建器插件
- python - 从日期范围中识别空白天,不包括重叠
- rest - 通过外部 API 请求自动创建和删除用户
- rest-assured - 我可以使用 RestAssured 框架编写 API 合同测试(消费者驱动)吗?
- angular - NGXS State 共享子节点
- ar.js - 如何在 AR.js 中为场景设置自定义地理位置?