Spark加载csv文件并存储列中的文件名

时间:2018-12-02 14:42:06

标签: python apache-spark-sql

我们有一个Blob存储,一整天都有大量文件到达。 我有一个正在运行的Databricks笔记本,它批量读取目录列表,循环播放文件,然后将它们全部发送到Azure SQLDW.Works中。 之后,已处理的文件将移至存档中。 但是循环文件列表,附加每个文件列表并将文件名添加到列的过程有点慢。 我想知道是否可以一次运行。可以一次性加载所有csv文件,但是如何在列中存储相应的文件名。

有人有建议吗?

1 个答案:

答案 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更快。

注意:尚未测试解决方案。