Pyspark 查找spark作业输出文件的位置

Pyspark 查找spark作业输出文件的位置,pyspark,amazon-emr,Pyspark,Amazon Emr,我正在AWS上的EMR集群中测试pyspark作业。目标是使用Lambda函数启动spark作业,但目前我正在手动运行spark作业。因此,我使用SSH连接到主节点,然后运行spark作业,如下所示: spark-submit /home/hadoop/testspark.py mybucket mybucket—传递给spark作业的参数 保存RDD的行是 rddFiltered.repartition(1).saveAsTextFile("/home/hadoop/output.txt")

我正在AWS上的EMR集群中测试pyspark作业。目标是使用Lambda函数启动spark作业,但目前我正在手动运行spark作业。因此,我使用SSH连接到主节点,然后运行spark作业,如下所示:

spark-submit /home/hadoop/testspark.py mybucket
mybucket—传递给spark作业的参数

保存RDD的行是

rddFiltered.repartition(1).saveAsTextFile("/home/hadoop/output.txt")
spark作业似乎正在运行,但它将输出文件放在某个位置-输出目录中hdfs://ip-xxx-xx-xx-xx.ec2.internal:8020/home/hadoop/output.txt.

  • 这到底在哪里?我如何查看内容?请原谅我对HDFS和Hadoop的无知
  • 最后,我想将output.txt重命名为有意义的名称,然后转移到S3,只是还没有实现
  • 如果我重新运行spark作业,它会显示“输出目录”hdfs://ip-xxx-xx-xx-xx.ec2.internal:8020/home/hadoop/output.txt 已经存在”。如何防止此情况发生或至少覆盖该文件

  • 谢谢

    根据EMR文档:

    如果不指定前缀,默认情况下spark将向HDFS写入数据。您可以使用以下命令检查EMR HDFS:

    hadoop fs -ls /home/hadoop/
    
    您还可以使用S3DistCp从HDFS传输到S3:

    很遗憾,您无法使用saveAsTextFile覆盖现有文件:

    正如我看到的,您将文件重新分区为一个分区,因此您也可以将其写入本地文件系统:

    rddFiltered.repartition(1).collect().saveAsTextFile("file:///home/hadoop/output.txt")
    
    注意,如果您使用的是分布式集群,您必须首先
    collect()
    返回到驱动程序