如何以特定顺序使用 Databricks dbutils 复制文件
Posted
技术标签:
【中文标题】如何以特定顺序使用 Databricks dbutils 复制文件【英文标题】:How to Copy Files with Databricks dbutilis in particular order 【发布时间】:2019-01-11 11:04:39 【问题描述】:该小组的一名成员帮助我根据日期将文件复制到关注者
copy based on date
我想调整代码以根据文件名中的某些字符复制文件 - 在下面的示例中,字符是 1111、1112、1113 和 1114 所以,如果我们有如下四个文件:
File_Account_1111_exam1.csv File_Account_1112_testxx.csv File_Account_1113_pringle.csv File_Account_1114_sam34.csv
仅当 File_Account_1113_pringle.csv 已复制到文件夹时,我才希望将 File_Account_1114_sam34.csv 复制到文件夹中。 同样,如果 File_Account_1112_testxx.csv 已经被复制到文件夹等等,我只想复制 File_Account_1113_pringle.csv。
因此,如果所有文件都已复制到一个文件夹中,它将如下所示:
dbutils.fs.put("/mnt/adls2/demo/files/file_Account_1111_exam1.csv", data, True)
dbutils.fs.put("/mnt/adls2/demo/files/file_Account_1112_testxx.csv", data, True)
dbutils.fs.put("/mnt/adls2/demo/files/file_Account_1113_pringle.csv", data, True)
dbutils.fs.put("/mnt/adls2/demo/files/file_Account_1114_sam34.csv", data, True)
【问题讨论】:
看起来您正在尝试使用复制文件操作来实现一些业务逻辑,这将是复杂的自动测试和维护。更直接、灵活和可测试的是复制所有可用文件,然后在数据管道级别应用业务逻辑。 @DavidGreenshtein,是的,我正在尝试实现业务逻辑。但是,我很挣扎。 复制操作完成后如何读取文件? @DavidGreenshtein,我做了一个 spark.read.csv。我很欣赏这个问题的复杂性,但是我希望如果没有人能够提供答案,那么也许有人可以让我朝着正确的方向寻求解决方案? 我正在尝试通过改进此处的问题来解除 *** 的禁令,因为我的得分为 -1。但我看不出我应该在哪里编辑这个问题来改进它并解除禁令。有人可以让我知道为什么这是一个坏问题吗?以及如何改进? 【参考方案1】:在将文件上传到 DBFS 时不要应用任何业务逻辑,我建议上传所有可用文件,然后使用 test = sc.wholeTextFiles("pathtofile")
读取它们,这将返回文件名和文件内容的键/值 RDD,这里是对应的thread。一旦完成,任何基于文件名的排序或过滤业务逻辑都可以在 Spark 作业中实现和测试。
希望对你有帮助。
【讨论】:
以上是关于如何以特定顺序使用 Databricks dbutils 复制文件的主要内容,如果未能解决你的问题,请参考以下文章