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

Apache spark 如何引用执行spark submit的本地文件系统?,apache-spark,pyspark,Apache Spark,Pyspark,在集群中处理spark程序结果时,是否可以将其输出写入驱动程序节点 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 lo

在集群中处理spark程序结果时,是否可以将其输出写入驱动程序节点

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
df=sqlContext(“hdfs://....")
结果=df.groupby('abc','cde').count()
result.write.save(“hdfs:…resultfile.parquet”,format=“parquet”)#这很好用
result=result.collect()
打开(“//textfile”)作为myfile:
myfile.write(result)#我将在编写之前转换为python对象

有人能告诉我如何引用我在其中提供的本地文件系统吗?

根据我从您的问题中了解到的情况,您正在询问在运行spark时如何将本地文件保存在驱动程序或工作程序中

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

关键是,最终,驱动程序和工作程序都在运行python,因此您可以使用python“open”、“with”、“write”等等

要在workers中实现这一点,您需要在rdd上运行“foreach”或“map”,然后在本地保存(这可能很棘手,因为每个执行器上可能有多个分区)

从驱动程序保存数据更容易,在收集数据之后,您就有了一个常规的python对象,并且可以用任何python方式保存它

但是

当您保存任何本地文件(可能在工作程序或驱动程序上)时,该文件将在运行工作程序或驱动程序的容器中创建。一旦执行完毕,这些容器将被删除,您将无法访问其中存储的任何本地数据

解决这一问题的方法是在容器仍处于活动状态时将这些本地文件移动到某个位置。您可以通过shell命令、插入数据库等来实现这一点


例如,我使用这种技术将计算结果插入MySQL,而无需进行收集。作为“映射”操作的一部分,我将结果本地保存在workers上,然后使用MySQL“LOAD DATA LOCAL Inflie”上传它们;dr
使用
(dot),当前工作目录由API解析