You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Databricks Autoloader如何筛选特定文件扩展名(包含/排除)?

如何用Databricks Autoloader排除目录中的特定文件类型

当然可以!Databricks Autoloader提供了实用的配置选项,能轻松帮你过滤掉目录里混入的日志文件或者其他非目标文件。下面给你两种常用的实现方式,附代码示例:

方法1:通过cloudFiles.includePattern指定仅加载目标文件

这个选项允许你用正则表达式定义只加载符合规则的文件,相当于间接排除了不符合的文件。比如你的目标文件是CSV/Parquet格式,而日志文件都是.log后缀,就可以这么写:

df = spark.readStream.format("cloudFiles") \
  .option("cloudFiles.format", "csv")  # 替换为你的目标文件格式,比如parquet、json
  .option("cloudFiles.includePattern", ".*\\.(csv|parquet)$")  # 仅匹配csv/parquet后缀的文件
  .schema(your_target_schema) \
  .load("/path/to/your/directory")

这里的正则.*\\.(csv|parquet)$会匹配所有以.csv.parquet结尾的文件,那些.log日志文件会被自动跳过。

方法2:用cloudFiles.excludePattern直接排除指定文件

如果你明确知道要排除的文件模式(比如所有.log文件),用这个选项更直接:

df = spark.readStream.format("cloudFiles") \
  .option("cloudFiles.format", "json")  # 你的目标文件格式
  .option("cloudFiles.excludePattern", ".*\\.log$")  # 排除所有.log结尾的文件
  .schema(your_target_schema) \
  .load("/path/to/your/directory")

这个配置会让Autoloader直接跳过所有匹配.log后缀的文件,只处理符合你指定格式的文件。

几个重要的注意点

  • 正则表达式要遵循Java正则规范,所以转义符需要用\\而不是单个\
  • Autoloader默认会递归扫描子目录,这两个过滤规则同样会作用于子目录里的文件。
  • 如果你同时配置了includePatternexcludePatternexclude规则的优先级更高——也就是说,如果一个文件同时符合两个规则,它会被排除。

内容的提问来源于stack exchange,提问作者Keshav Agrawal

火山引擎 最新活动