read_file
表值函数
适用于:砖的SQL砖运行时13.1及以后
读取文件在一个位置并返回数据以表格形式提供。
支持阅读JSON
,CSV
,文本
,BINARYFILE
,拼花
,AVRO
,兽人
文件格式。可以自动检测文件格式和推断出一个统一的模式在所有文件。
文件发现
read_file
能读懂一个人提供一个目录下的文件或阅读文件。read_file
递归地发现所提供的目录下的所有文件,除非一个一团提供的指示吗read_file
递归到一个特定的目录模式。
过滤使用一滴目录或文件模式
水珠模式可用于过滤目录和文件时提供的路径。
模式 |
描述 |
---|---|
|
匹配任何单个的字符 |
|
匹配零个或多个字符 |
|
匹配一个字符的字符集{a, b, c}。 |
|
匹配一个字符的字符范围{…z}。 |
|
匹配一个字符不是字符集或距离{}。请注意, |
|
匹配字符串的字符串集{ab、cd}。 |
|
匹配字符串的字符串集{ab, cde, cfh}。 |
read_file
使用自动加载程序严格的水珠时发现文件的粘稠。这是配置的useStrictGlobber
选择。当严格的水珠被禁用,斜杠(/
),一个明星模式等/ * /
可以扩展到发现多个目录。看下面的例子的不同行为。
模式 |
文件路径 |
严格的水珠禁用 |
严格的水珠启用 |
---|---|---|---|
/ / b |
/ a / b / c / file.txt |
是的 |
是的 |
/ / b |
/ / b_dir / c / file.txt |
没有 |
没有 |
/ / b |
/ / b.txt |
没有 |
没有 |
/ a / b / |
/ / b.txt |
没有 |
没有 |
/ / * / c / |
/ a / b / c / file.txt |
是的 |
是的 |
/ / * / c / |
/ a / b / c / d / file.txt |
是的 |
是的 |
/ / * / d / |
/ a / b / c / d / file.txt |
是的 |
没有 |
/ / * / c / |
/ a / b / x / y / c / file.txt |
是的 |
没有 |
/ / * / c |
/ a / b / c_file.txt |
是的 |
没有 |
/ / * / c / |
/ a / b / c_file.txt |
是的 |
没有 |
/ / * / c |
/ / b / cookie / file.txt |
是的 |
没有 |
/ / b * |
/ / b.txt |
是的 |
是的 |
/ / b * |
/ a / b / file.txt |
是的 |
是的 |
/ / {0. txt, 1. txt} |
/ / 0.三种 |
是的 |
是的 |
/ / * / {0. txt, 1. txt} |
/ / 0.三种 |
没有 |
没有 |
/ a / b / [cde-h] /我/ |
/ a / b / c / i / file.txt |
是的 |
是的 |
模式推理
可以显式地提供文件的模式read_file
与模式
选择。不提供模式时,read_file
试图推断出一个统一的模式发现的文件,除非需要阅读所有的文件限制
声明中使用。即使使用限制
查询,一个更大的比所需的文件集可能读取返回一个更具代表性的数据模式。砖自动添加一个限制
声明为选择
查询在笔记本和SQL编辑器如果用户没有提供。
的schemaHints
选项可以用来修复推断模式的子集。看到覆盖模式推理与提示为更多的细节。
一个rescuedDataColumn
默认情况下提供救援模式不匹配的任何数据。看到获救的数据列是什么?为更多的细节。你可以放下rescuedDataColumn
通过设置选项schemaEvolutionMode= >“没有”
。
分区模式推理
read_file
也可以推断出分区列如果文件被存储Hive-style分区目录,/ column_name = column_value /
。如果一个模式
,发现分区列利用类型提供的吗模式
。如果分区列不提供的一部分模式
,然后推断出分区列将被忽略。
如果一列存在的分区模式和数据列,的值读取数据的分区使用价值而不是价值。如果你想忽略来自目录和使用数据的值列,您可以提供的列表分区列以逗号分隔的列表partitionColumns
选择。
的partitionColumns
选项还可以用来指导read_file
在最后发现列包括推断模式。提供一个空字符串忽略所有分区列。
的schemaHints
选项也可以覆盖推断模式提供一个分区列。
的文本
和BINARYFILE
格式有固定的模式,但是read_file
也为这些格式试图推断出分区。
使用流表中
read_file
可用于流表来摄取文件到三角洲湖。read_file
利用自动加载器使用时在一个流表中查询。你必须使用流
关键字与read_file
。看到自动加载器是什么?为更多的细节。
当流查询中使用,read_file
将使用一个示例来推断数据的模式,并且可以动态演变模式,因为它处理更多的数据。看到配置模式推理和进化自动加载程序为更多的细节。
选项
基本选项
选项 |
---|
格式 类型: 的数据文件格式在源路径中。Auto-inferred如果没有提供。允许的值包括: 默认值:无 |
inferColumnTypes 类型: 是否当利用模式推理推断出准确的列类型。默认情况下,列是推断当推断JSON和CSV数据集。看到模式推理为更多的细节。注意,这是默认的自动加载程序的反面。 默认值: |
partitionColumns 类型: 蜂巢的逗号分隔列表样式分区列你想从文件的目录结构推断。蜂巢式分区列是键值对组合等一个平等的迹象
指定 默认值:无 |
schemaHints 类型: 模式信息期间,您提供自动加载程序模式推理。看到模式提示为更多的细节。 默认值:无 |
useStrictGlobber 类型: 是否使用默认的globbing行为相匹配的严格的水珠Apache引发的其他文件来源。看到常见的数据加载模式为更多的细节。在砖运行时12.0及以上。注意,这是相反的默认为自动加载程序。 默认值: |
通用选项
以下选项适用于所有文件格式。
选项 |
---|
ignoreCorruptFiles 类型: 是否忽略腐败文件。如果这是真的,火花的工作将继续运行,当遇到损坏文件和已读过的内容仍将返回。可见, 默认值: |
ignoreMissingFiles 类型: 是否忽略丢失的文件。如果这是真的,火花的工作将继续运行,当遇到丢失的文件和内容阅读仍将返回。在砖运行时11.0及以上。 默认值: |
modifiedAfter 类型: 一个可选的时间戳来摄取文件修改时间戳后提供时间戳。 默认值:无 |
modifiedBefore 类型: 一个可选的时间戳来摄取文件修改时间戳之前提供的时间戳。 默认值:无 |
pathGlobFilter或fileNamePattern 类型: 一个潜在的水珠模式提供选择文件。相当于 默认值:无 |
recursiveFileLookup 类型: 是否加载数据基地内递归目录和跳过分区推断。 默认值: |
JSON
选项
选项 |
---|
allowBackslashEscapingAnyCharacter 类型: 是否允许反斜杠转义字符的任何成功。如果未启用,只有那些显式列出字符由JSON规范可以逃脱。 默认值: |
allowComments 类型: 是否允许使用Java, C和c++风格的评论( 默认值: |
allowNonNumericNumbers 类型: 是否允许的集合不是一个数字( 默认值: |
allowNumericLeadingZeros 类型: 是否允许积分数字开始额外(循环)0(例如,000001)。 默认值: |
allowSingleQuotes 类型: 是否允许使用单引号(撇号,性格 默认值: |
allowUnquotedControlChars 类型: 是否允许JSON字符串包含保有的控制字符(ASCII字符值小于32,包括选项卡并换行字符)。 默认值: |
allowUnquotedFieldNames 类型: 是否允许使用非挂牌字段名称(允许JavaScript,但不是通过JSON规范)。 默认值: |
badRecordsPath 类型: 存储文件的路径记录坏JSON的信息记录。 默认值:无 |
columnNameOfCorruptRecord 类型: 列存储记录,是畸形的,不能被解析。如果 默认值: |
dateFormat 类型: 解析日期的格式字符串。 默认值: |
dropFieldIfAllNull 类型: 是否要忽略所有空值的列或空数组和结构体在模式推理。 默认值: |
编码或字符集 类型: JSON编码的文件的名称。看到 默认值: |
inferTimestamp 类型: 是否尝试推断作为时间戳字符串 默认值: |
lineSep 类型: 两个连续的JSON记录之间的字符串。 默认值:没有,涵盖 |
语言环境 类型: 一个 默认值: |
模式 类型: 解析器模式在处理畸形的记录。之一 默认值: |
多行 类型: JSON记录是否跨越多个行。 默认值: |
prefersDecimal 类型: 试图推断出字符串 默认值: |
primitivesAsString 类型: 是否要推断数字和布尔值等基本类型 默认值: |
rescuedDataColumn 类型: 是否收集所有的数据不能被解析由于模式数据类型不匹配或不匹配(包括列套管)到一个单独的列中。这一列包含在默认情况下使用时自动加载程序。有关更多细节,请参考获救的数据列是什么?。 默认值:无 |
timestampFormat 类型: 解析时间戳的格式字符串。 默认值: |
时区 类型: 的 默认值:无 |
CSV
选项
选项 |
---|
badRecordsPath 类型: 存储文件的路径记录坏CSV信息记录。 默认值:无 |
charToEscapeQuoteEscaping 类型: 使用的用来逃避字符转义引号。例如,对于以下记录:
默认值: |
columnNameOfCorruptRecord 类型: 一列来存储记录畸形,不能被解析。如果 默认值: |
评论 类型: 定义了字符代表一行评论时发现一行文本的开始。使用 默认值: |
dateFormat 类型: 解析日期的格式字符串。 默认值: |
emptyValue 类型: 空值的字符串表示。 默认值: |
编码或字符集 类型: CSV文件的编码的名称。看到 默认值: |
enforceSchema 类型: 是否强行指定或推断模式应用到CSV文件。如果启用了选择,CSV文件的标题将被忽略。这个选项默认是忽略了在使用自动加载程序来拯救数据并允许模式演化。 默认值: |
逃避 类型: 解析数据时使用的转义字符。 默认值: |
头 类型: CSV文件是否包含一个头。自动加载程序假设推断模式时文件头。 默认值: |
ignoreLeadingWhiteSpace 类型: 是否忽略主要空白每个解析值。 默认值: |
ignoreTrailingWhiteSpace 类型: 是否忽略尾随的空格为每个解析值。 默认值: |
inferSchema 类型: 是否来推断的数据类型解析CSV或假设所有列的记录 默认值: |
lineSep 类型: 两个连续的CSV记录之间的字符串。 默认值:没有,涵盖 |
语言环境 类型: 一个 默认值: |
maxCharsPerColumn 类型: 最大数量的角色期望从一个值来解析。可以用来避免内存错误。默认为 默认值: |
maxColumns 类型: 有多少列的硬限制记录。 默认值: |
mergeSchema 类型: 是否来推断模式跨多个文件和每个文件的合并模式。默认启用推断模式时自动加载程序。 默认值: |
模式 类型: 解析器模式在处理畸形的记录。之一 默认值: |
多行 类型: CSV档案是否跨越多个行。 默认值: |
nanValue 类型: 当解析non-a-number值的字符串表示 默认值: |
negativeInf 类型: 当解析的字符串表示负无穷 默认值: |
nullValue 类型: 空值的字符串表示。 默认值: |
parserCaseSensitive(弃用) 类型: 在阅读文件,是否对齐列的标题模式中声明的情况下敏感。这是 默认值: |
positiveInf 类型: 当解析的字符串表示正无穷 默认值: |
preferDate 类型: 试图推断出字符串作为日期的时间戳。您还必须使用模式推理,通过启用 默认值: |
报价 类型: 使用的字符转义值字段分隔符的值。 默认值: |
readerCaseSensitive 类型: 当指定大小写敏感性行为 默认值: |
rescuedDataColumn 类型: 是否收集所有数据不能被解析由于:一个数据类型不匹配,不匹配和模式(包括列套管)到一个单独的列中。这一列包含在默认情况下使用时自动加载程序。更多细节请参考获救的数据列是什么?。 默认值:无 |
9月或分隔符 类型: 列之间的分隔符字符串。 默认值: |
skipRows 类型: 的行数从一开始就应该被忽略的CSV文件(包括注释和空行)。如果 默认值: |
timestampFormat 类型: 解析时间戳的格式字符串。 默认值: |
时区 类型: 的 默认值:无 |
unescapedQuoteHandling 类型: 策略来处理非转义引号。允许选择:
默认值: |
拼花
选项
选项 |
---|
datetimeRebaseMode 类型: 控制变基之间的日期和时间戳值朱利安和预期的公历日历。允许的值: 默认值: |
int96RebaseMode 类型: 控制的变基INT96时间戳值之间朱利安和预期的公历日历。允许的值: 默认值: |
mergeSchema 类型: 是否来推断模式跨多个文件和每个文件的合并模式。 默认值: |
readerCaseSensitive 类型: 当指定大小写敏感性行为 默认值: |
rescuedDataColumn 类型: 是否收集所有数据不能被解析由于:一个数据类型不匹配,不匹配和模式(包括列套管)到一个单独的列中。这一列包含在默认情况下使用时自动加载程序。更多细节请参考获救的数据列是什么?。 默认值:无 |
AVRO
选项
选项 |
---|
avroSchema 类型: Avro格式的用户提供的可选模式。阅读Avro时,这个选项可以设置为一种进化模式,这是兼容与实际Avro但是不同的模式。反序列化的模式将与进化模式一致。例如,如果您设置一个进化模式包含一个额外的列的默认值,读取结果将包含新列。 默认值:无 |
datetimeRebaseMode 类型: 控制变基之间的日期和时间戳值朱利安和预期的公历日历。允许的值: 默认值: |
mergeSchema 类型: 是否来推断模式跨多个文件和每个文件的合并模式。 默认值: |
readerCaseSensitive 类型: 当指定大小写敏感性行为 默认值: |
rescuedDataColumn 类型: 是否收集所有数据不能被解析由于:一个数据类型不匹配,不匹配和模式(包括列套管)到一个单独的列中。这一列包含在默认情况下使用时自动加载程序。更多细节请参考获救的数据列是什么?。 默认值:无 |
BINARYFILE
选项
二进制文件没有任何额外的配置选项。
文本
选项
选项 |
---|
编码 类型: 文本文件的编码的名称。看到 默认值: |
lineSep 类型: 两个连续的文本记录之间的字符串。 默认值:没有,涵盖 |
wholeText 类型: 是否要读取一个文件作为一个单独的记录。 默认值: |
兽人
选项
选项 |
---|
mergeSchema 类型: 是否来推断模式跨多个文件和每个文件的合并模式。 默认值: |
流选项
当使用这些选项适用read_file
在一个流表查询或流。
选项 |
---|
allowOverwrites 类型: 是否处理文档文件被修改后的发现。最新版本的文件将被处理在刷新如果它已被修改自最后一次成功刷新查询开始时间。 默认值: |
includeExistingFiles 类型: 是否在流处理的输入包括现有的文件路径或只处理新文件初始设置后到达。评估这个选项只有当你开始为第一次流。改变这个选项后重启流没有影响。 默认值: |
maxBytesPerTrigger 类型: 新处理字节的最大数量在每一个触发器。您可以指定一个字节字符串等 默认值:无 |
maxFilesPerTrigger 类型: 处理新文件的最大数量在每一个触发器。一起使用时 默认值:1000 |
schemaEvolutionMode 类型: 发展模式的模式中发现新列数据。默认情况下,列是推断作为字符串当推断JSON数据集。看到模式演化为更多的细节。这个选项不适用 默认值: |
schemaLocation 类型: 存储位置推断模式和后续更改。看到模式推理为更多的细节。模式位置使用时不需要在流表查询。 默认值:无 |
例子
在给定的路径,读取文件可用。检测数据的格式和模式。>选择*从read_file(“abfss: / / container@storageAccount.dfs.core.windows.net/base/path');——在给定的路径读取headerless CSV文件提供的模式。>选择*从read_file(“s3: / /桶/路径”,格式= >“csv”,模式= >“int id、ts时间戳、事件字符串”);——推断CSV文件头的模式。因为不提供的模式,认为头——CSV文件。>选择*从read_file(“s3: / /桶/路径”,格式= >“csv”)——读起来有一个csv文件后缀。>选择*从read_file(s3: / /桶/道路/ * . csv”)——读一个JSON文件>选择*从read_file(“abfss: / / container@storageAccount.dfs.core.windows.net/path/single.json')——读取JSON文件和覆盖的数据类型列id的整数。>选择*从read_file(“s3: / /桶/路径”,格式= >json的,schemaHints= >“int id”)——昨天读取文件上传或修改。>选择*从read_file(“gs: / /桶/ avroData”,modifiedAfter= >date_sub(当前日期(),1),modifiedBefore= >当前日期())——创建一个增量表和存储源文件路径的一部分数据>创建表my_avro_data作为选择*,_metadata。file_path从read_file(“gs: / /桶/ avroData”)——创建一个流表,流程文件,仅出现在表的创建。——表将最有可能是空的(如果没有时钟脉冲相位差)在第一次创建后,——未来的刷新会带来新的数据。>创建或刷新流媒体表avro_data作为选择*从流read_file(“gs: / /桶/ avroData”,includeExistingFiles= >假);