如何引用执行 spark-submit 的本地文件系统?

How to refer to the local filesystem where spark-submit is executed on?

spark程序在集群中处理的结果是否可以写入driver节点?

df = sqlContext("hdfs://....")
result = df.groupby('abc','cde').count()
result.write.save("hdfs:...resultfile.parquet", format="parquet")  # this works fine

result = result.collect()

with open("<my drivernode local directory>//textfile") as myfile:
    myfile.write(result)    # I'll convert to python object before writing

有人可以告诉我如何引用我给 spark-submit 的本地文件系统吗?

据我从你的问题中了解到,你问的是在 运行ning spark 时将本地文件保存在 driver 或工作人员中。

这是可能的,而且非常简单。

关键是最后driver和worker是运行宁python所以可以用python"open","with"、"write" 等等。

要在 worker 中执行此操作,您需要 运行 "foreach" 或 "map" 在您的 rdd 上,然后在本地保存(这可能很棘手,因为您可能有更多比每个执行器上的一个分区)。

从 driver 保存更容易,在您收集数据后,您有一个常规 python object 并且您可以将其保存在任何搁浅的 pythonic方式。

但是

当您保存任何本地文件时,可能是在工作人员或 driver 上,该文件是在工作人员或 driver 的 容器 中创建的正在 运行ning 中。执行结束后,这些容器将被 删除,您将无法访问存储在其中的任何本地数据。

解决这个问题的方法是在容器还活着的时候把那些本地文件也移动到某个地方。您可以使用 shell 命令执行此操作,插入数据库等。

例如,我使用这种技术将计算结果插入 MySQL 而无需收集。作为 "map" 操作的一部分,我将结果保存在工作人员本地,然后使用 MySQL "LOAD DATA LOCAL INFILE".

上传它们

tl;dr 使用 .(点),当前工作目录由 API.

解析