我们可以从 Databricks Autoloader 中排除或只包含特定的文件扩展名吗?
Can we exclude or include only particular file extensions from Databricks Autoloader?
现在,databricks 自动加载器需要一个目录路径,所有文件将从中加载。但是如果其他类型的日志文件也开始进入该目录 - 有没有办法让自动加载器在准备数据帧时排除这些文件?
df = spark.readStream.format("cloudFiles") \
.option(<cloudFiles-option>, <option-value>) \
.schema(<schema>) \
.load(<input-path>)
Autoloader 支持将 glob 字符串指定为 <input-path>
- 来自 documentation:
<input-path>
can contain file glob patterns
Glob 语法支持 different options,例如 *
用于任何字符等。因此您可以将 input-path
指定为 path/*.json
等。您也可以排除文件,但与包含模式相比,构建该模式可能稍微复杂一些,但它仍然是可能的 - 例如,*.[^l][^o][^g]
应该排除扩展名为 .log
的文件
使用 pathGlobFilter
作为选项之一并提供正则表达式来过滤文件类型或具有特定名称的文件。
例如,要从加载位置跳过文件名为 A1.csv、A2.csv .... A9.csv 的文件,pathGlobFilter
的值将如下所示:
df = spark.read.load("/file/load/location,
format="csv",
schema=schema,
pathGlobFilter="A[0-9].csv")
现在,databricks 自动加载器需要一个目录路径,所有文件将从中加载。但是如果其他类型的日志文件也开始进入该目录 - 有没有办法让自动加载器在准备数据帧时排除这些文件?
df = spark.readStream.format("cloudFiles") \
.option(<cloudFiles-option>, <option-value>) \
.schema(<schema>) \
.load(<input-path>)
Autoloader 支持将 glob 字符串指定为 <input-path>
- 来自 documentation:
<input-path>
can contain file glob patterns
Glob 语法支持 different options,例如 *
用于任何字符等。因此您可以将 input-path
指定为 path/*.json
等。您也可以排除文件,但与包含模式相比,构建该模式可能稍微复杂一些,但它仍然是可能的 - 例如,*.[^l][^o][^g]
应该排除扩展名为 .log
的文件
使用 pathGlobFilter
作为选项之一并提供正则表达式来过滤文件类型或具有特定名称的文件。
例如,要从加载位置跳过文件名为 A1.csv、A2.csv .... A9.csv 的文件,pathGlobFilter
的值将如下所示:
df = spark.read.load("/file/load/location,
format="csv",
schema=schema,
pathGlobFilter="A[0-9].csv")