根据 Spark scala 中的文件夹名称重命名和移动 S3 文件

2024-01-01

我在 s3 文件夹中有 Spark 输出,我想将所有 s3 文件从该输出文件夹移动到另一个位置,但在移动时我想重命名这些文件。

例如,我在 S3 文件夹中有文件,如下所示

现在我想重命名所有文件并放入另一个目录中,但文件的名称如下所示

Fundamental.FinancialStatement.FinancialStatementLineItems.Japan.1971-BAL.1.2017-10-18-0439.Full.txt
Fundamental.FinancialStatement.FinancialStatementLineItems.Japan.1971-BAL.2.2017-10-18-0439.Full.txt
Fundamental.FinancialStatement.FinancialStatementLineItems.Japan.1971-BAL.3.2017-10-18-0439.Full.txt

这里Fundamental.FinancialStatement在所有文件中都是恒定的2017-10-18-0439当前日期时间。

这是我到目前为止所尝试过的,但无法获取文件夹名称并循环遍历所有文件

    import org.apache.hadoop.fs._

val src = new Path("s3://trfsmallfffile/Segments/output")
val dest = new Path("s3://trfsmallfffile/Segments/Finaloutput")
val conf = sc.hadoopConfiguration   // assuming sc = spark context
val fs = src.getFileSystem(conf)
//val file = fs.globStatus(new Path("src/DataPartition=Japan/part*.gz"))(0).getPath.getName
//println(file)
val status = fs.listStatus(src)    

status.foreach(filename => {
               val a = filename.getPath.getName.toString()
                println("file name"+a)
                //println(filename)
             })

这给了我以下输出

    file nameDataPartition=Japan
file nameDataPartition=SelfSourcedPrivate
file nameDataPartition=SelfSourcedPublic
file name_SUCCESS

这为我提供了文件夹详细信息,而不是文件夹内的文件。

参考资料取自这里堆栈溢出参考 https://stackoverflow.com/questions/48200035/how-rename-s3-files-not-hdfs-in-spark-scala/48223470?noredirect=1#comment83543229_48223470


您正在获取目录,因为您在 s3 中有子目录级别。

/*/* to go in subdir .

Try this

import org.apache.hadoop.fs._

val src = new Path("s3://trfsmallfffile/Segments/Output/*/*")
val dest = new Path("s3://trfsmallfffile/Segments/FinalOutput")
val conf = sc.hadoopConfiguration   // assuming sc = spark context
val fs = src.getFileSystem(conf)

val file = fs.globStatus(new Path("s3://trfsmallfffile/Segments/Output/*/*"))


  for (urlStatus <- file) {
    //println("S3 FILE PATH IS ===:" + urlStatus.getPath)
    val partitioName=urlStatus.getPath.toString.split("=")(1).split("\\/")(0).toString
    val finalPrefix="Fundamental.FinancialLineItem.Segments."
    val finalFileName=finalPrefix+partitioName+".txt"
    val dest = new Path("s3://trfsmallfffile/Segments/FinalOutput"+"/"+finalFileName+ " ")
    fs.rename(urlStatus.getPath, dest)
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据 Spark scala 中的文件夹名称重命名和移动 S3 文件 的相关文章

随机推荐

  • CakePHP 用 MAX 查找

    表格和虚拟数据 CREATE TABLE IF NOT EXISTS messages id int 11 unsigned NOT NULL auto increment user id int 11 unsigned NOT NULL
  • Mayavi:在 triangular_mesh 中插入面部颜色

    我已经拼凑了 以下代码使用指定的颜色绘制三角形网格 附加标量函数 usr bin env python import numpy as np from mayavi import mlab Create cone n 8 t np lins
  • 将元素定位在

    我有一个Fiddle http jsfiddle net pTNqe 9 其中包含一个 div 一些文本和一个按钮 我想将按钮放置在 div 的右上角 无论 div 有多大 或者 div 中有多少文本 我想像 float right pos
  • 如何在 flutter 中使用粘性组列表时选择多个项目

    在这里解释一下我想要什么 我从 GitHub 获得了这段代码 当用户开始选择项目时 我想要带有操作按钮的应用栏 就像多个项目选择和应用栏显示所选项目的数量 我可以使用 ListViewbuilder 轻松完成此操作 但不知道如何在使用粘性组
  • SwiftUI:如何仅在需要时更新从父视图传输的变量?

    我想将变量从父视图传递到子视图 但在此子视图中 在文本字段中使用它 但仅在按下 保存 按钮时更新此值 我试过这个 父视图 struct ParentView View State private var name String var bo
  • “奇怪的”C# 属性语法

    我刚刚在一个 c 项目中看到了这个 public char this int index 我认为自己是 C 新手 任何人都可以帮助它的含义是什么 它是一个索引器 索引器允许对类或结构的实例进行索引 就像 数组 索引器类似于属性 只是它们的访
  • PowerBI:将列拆分为单独的列

    我有一个正在导入的类别多选字段 其中包含多个用逗号分隔的值 农业 小额信贷 和平建设 我的主要本能是使用文本函数将每个值拆分为单独的列 但我想知道是否有更好 更简单的方法来做到这一点 好的 找到了 在数据视图中打开编辑查询 右键单击该列 拆
  • 如何从多个数据帧创建热图

    我对 R 还很陌生 并且一直困惑于如何从列表中的多个数据帧创建热图 每个数据框中有 3 列 X 位置 Y 位置 PatchStatus 第一个数据框如下所示 listofdfs lt list list of dataframes list
  • Flyway 无法连接到 docker-entrypoint-initdb.d 脚本中的 postgres 容器

    我正在尝试延长docker 的 postgres https hub docker com postgres 图像可能 通过环境变量标志 在 DB init 上执行 Flyway DB 迁移 我的 Dockerfile 在这里 FROM p
  • extjs,是否可以压缩加载ext-all.js?

    我有一个使用 extjs 库的网站 确切地说 我只需要网格 ajax 和树组件 我的项目是全国使用的 为了避免某些地区带宽低造成的问题 我必须让它尽可能的轻量 当我在chrome中使用开发者工具时 我的网站太重了 特别是在加载 ext al
  • Ruby:查找字符串中的前 N ​​个正则表达式匹配项(并停止扫描)

    想要扫描很长的字符串以查找正则表达式匹配 想知道找到前 N 个正则表达式的最有效方法是什么 例如就像是 abcabcabc scan b limit 2 如果仅扫描支持限制选项 则会在 5 个字符后成功结束 该字符串有几 MB 内存中的记忆
  • FTPWebRequest 530 错误:未登录问题

    我一直在挖掘大量关于如何在 C 中正确登录 FTP 的帖子 但当我真正尝试时 它不起作用 通过我的阅读 我开始认为这是因为我的用户名中有 at 符号 这是真的还是有其他问题 我可以使用 FileZilla 登录 没有问题 var file
  • 如何将nodejs从6.x更新到8.x?

    简单的问题 如何将nodejs从6 x更新到8 x 我有 Ubuntu 16 04 我应该卸载旧版本并安装新版本吗 如果是这样 我该怎么做 一个尝试过的 须藤最新 但它说 sudo n 未找到命令 当我刚刚 最新的 需要 sudo 卧槽 U
  • 有关 SQL Server 触发器的帮助

    假设我有3张桌子 t1 Nid name 1 aaa 2 bbb 3 ccc delT1 Nid name t2 Sid Nid value 1 1 AAA 2 1 BAC 3 2 CSA 表中t1 Nid是主键 是外键t2 现在我想要的是
  • 从 NSUrlConnection didReceiveAuthenticationChallenge 提供有意义的错误

    我正在使用 OWASP 示例证书和公钥固定 https www owasp org index php Certificate and Public Key Pinning 示例使用随机组织 http www random org and
  • 将 *.sdf 文件添加到 .gitignore 的可能影响

    我最近将一个 Visual Studio C 项目推送到了 github 我注意到 VS 创建了一个相对较大的 sdf 文件 25MB 我尝试删除工作区中的这个文件 看看 VS 是否会抛出错误 在 VS 中打开项目后 没有报告任何错误 并且
  • 我什么时候应该使用“类对象”、“类模块”、“模块内核”而不什么都不用?

    我是 ruby 元编程的新手 我看到人们在不同的地方对代码进行元编程 比如class Object class Module module Kernel和 无 即 在类 模块定义块之外 例如 我正在创建一个c attr accessor方法
  • 如何在dompdf中应用bootstrap样式

    我正在使用 bootstrap grid 来显示 我希望我的客户端以 pdf 格式下载它 因此我使用 dompdf 但 dompdf 无法应用 bootstrap 样式 我无法返回并将我的引导网格转换为基本的 html 表并使用不同的插件转
  • 出现错误 - ORA-01858: 在需要数字的地方发现了非数字字符

    我在下面的 sql 中收到错误 ORA 01858 在需要数字的地方发现了非数字字符 SELECT c contract num CASE WHEN MAX TO CHAR TO DATE c event dt YYYY MM DD MMD
  • 根据 Spark scala 中的文件夹名称重命名和移动 S3 文件

    我在 s3 文件夹中有 Spark 输出 我想将所有 s3 文件从该输出文件夹移动到另一个位置 但在移动时我想重命名这些文件 例如 我在 S3 文件夹中有文件 如下所示 现在我想重命名所有文件并放入另一个目录中 但文件的名称如下所示 Fun