我们有一个Blob存储,一整天都有大量文件到达。 我有一个正在运行的Databricks笔记本,它批量读取目录列表,循环播放文件,然后将它们全部发送到Azure SQLDW.Works中。 之后,已处理的文件将移至存档中。 但是循环文件列表,附加每个文件列表并将文件名添加到列的过程有点慢。 我想知道是否可以一次运行。可以一次性加载所有csv文件,但是如何在列中存储相应的文件名。
有人有建议吗?
答案 0 :(得分:1)
我可以想到几种方法
1. spark.read.format("csv").load("path").select(input_file_name())
2. spark.sparkContext.wholeTextFiles("path").map{case(x,y) => x} <-- avoid if data is huge
两者都提供给定路径中的所有文件名。由于前者基于DF可能比后一种RDD更快。
注意:尚未测试解决方案。