如何在spark scala中重命名S3文件而不是HDF
我在S3中存储了大约一百万个文本文件。 我想根据文件夹名称重命名所有文件 在spark scala我怎么能做到 我正在寻找一些示例代码 我正在使用齐柏林飞艇运行我的spark脚本 下面的代码我已经按照答案中的建议进行了尝试如何在spark scala中重命名S3文件而不是HDF,scala,amazon-web-services,apache-spark,amazon-s3,apache-zeppelin,Scala,Amazon Web Services,Apache Spark,Amazon S3,Apache Zeppelin,我在S3中存储了大约一百万个文本文件。 我想根据文件夹名称重命名所有文件 在spark scala我怎么能做到 我正在寻找一些示例代码 我正在使用齐柏林飞艇运行我的spark脚本 下面的代码我已经按照答案中的建议进行了尝试 import org.apache.hadoop.fs._ val src = new Path("s3://trfsmallfffile/FinancialLineItem/MAIN") val dest = new Path("s3://trfsmallfffile/F
import org.apache.hadoop.fs._
val src = new Path("s3://trfsmallfffile/FinancialLineItem/MAIN")
val dest = new Path("s3://trfsmallfffile/FinancialLineItem/MAIN/dest")
val conf = sc.hadoopConfiguration // assuming sc = spark context
val fs = Path.getFileSystem(conf)
fs.rename(src, dest)
但在误差以下
<console>:110: error: value getFileSystem is not a member of object org.apache.hadoop.fs.Path
val fs = Path.getFileSystem(conf)
:110:错误:value getFileSystem不是object org.apache.hadoop.fs.Path的成员
val fs=Path.getFileSystem(conf)
您可以使用普通的HDFS API,例如(键入,未测试)
S3A客户端伪造重命名的方式是对每个文件进行copy+delete
,因此所需时间与文件数量和数据量成正比。S3限制了您的速度:如果您尝试并行执行此操作,它可能会降低您的速度。如果需要“一段时间”,不要感到惊讶
您还可以按每1000次通话收取0.005美元的费用,因此您需要花费约5美元才能尝试。在一个小目录上测试,直到您确定一切正常为止您可以使用正常的HDFS API,例如(键入,未测试) S3A客户端伪造重命名的方式是对每个文件进行
copy+delete
,因此所需时间与文件数量和数据量成正比。S3限制了您的速度:如果您尝试并行执行此操作,它可能会降低您的速度。如果需要“一段时间”,不要感到惊讶
您还可以按每1000次通话收取0.005美元的费用,因此您需要花费约5美元才能尝试。在一个小目录上进行测试,直到您确定一切正常为止刚刚尝试过,但更新了错误我的问题请查看一下,确定,在我的代码中发现了一个错误。这就是说,如果您在这个级别上进行认真的工作,您将需要IDE中的整个Hadoop和Spark源代码树。请注意,并尽早开始练习。雷迪为此要求提出了两项赏金。我的同事也提出了一项积极赏金。。。我已经修复了我的代码,你应该使用'src.getFileSystem()`;这是一种非抽象的方法。正如我所警告的,不是打字,测试。是的,我投了赞成票。非常感谢。但还有一件事,我在src文件夹中有这么多文件,我想重命名并将其移动到其他文件夹中。我的cooleague为此创建了单独的问题。你能看一下这个问题吗…我们在这方面也有100分的悬赏。如果你能帮忙,那将是我刚刚被问到了,但是我的问题被更新了。请看一下。OK,在我的代码中发现了一个错误。这就是说,如果您在这个级别上进行认真的工作,您将需要IDE中的整个Hadoop和Spark源代码树。请注意,并尽早开始练习。雷迪为此要求提出了两项赏金。我的同事也提出了一项积极赏金。。。我已经修复了我的代码,你应该使用'src.getFileSystem()`;这是一种非抽象的方法。正如我所警告的,不是打字,测试。是的,我投了赞成票。非常感谢。但还有一件事,我在src文件夹中有这么多文件,我想重命名并将其移动到其他文件夹中。我的cooleague为此创建了单独的问题。你能看一下这个问题吗…我们在这方面也有100分的悬赏。如果你能帮忙,那将是伟大的
val src = new Path("s3a://bucket/data/src")
val dest = new Path("s3a://bucket/data/dest")
val conf = sc.hadoopConfiguration // assuming sc = spark context
val fs = src.getFileSystem(conf)
fs.rename(src, dest)