使用 Unity Catalog 外部位置加载数据

重要

此功能目前以公共预览版提供。

本文介绍如何使用添加数据 UI 通过 Unity Catalog 外部位置基于 Azure Data Lake Storage Gen2 中的数据创建托管表。 外部位置是将云存储路径与授权访问云存储路径的存储凭据相结合的对象。

开始之前

在开始之前,必须满足以下条件:

文件类型

支持以下文件类型:

  • CSV
  • TSV
  • JSON
  • XML
  • AVRO
  • Parquet

步骤 1:确认对外部位置的访问权限

若要确认对外部位置的访问权限,请执行以下操作:

  1. 在 Azure Databricks 工作区的边栏中,单击“目录”。
  2. 在目录资源管理器中,单击“外部数据”>“外部位置”。

步骤 2:创建托管表

若要创建托管表,请执行以下操作:

  1. 在工作区的边栏中,单击“+ 新建”>“添加数据”。

  2. 在添加数据 UI 中,单击“Azure Data Lake Storage”。

  3. 从下拉列表中选择一个外部位置。

  4. 选择要加载到 Azure Databricks 中的文件夹和文件,然后单击“预览表”。

  5. 从下拉列表中选择一个目录和架构。

  6. (可选)编辑表名。

  7. (可选)若要按文件类型设置高级格式选项,请单击“高级属性”,关闭“自动检测文件类型”,然后选择文件类型。

    有关格式选项的列表,请参阅以下部分。

  8. (可选)若要编辑列名,请单击列顶部的输入框。

    列名不支持逗号、反斜杠或 Unicode 字符(例如表情符号)。

  9. (可选)若要编辑列类型,请单击类型对应的图标。

  10. 单击“创建表”。

文件类型格式选项

根据文件类型,可以使用以下格式选项:

格式选项 说明 支持的文件类型
Column delimiter 列之间的分隔符。 仅允许单个字符,且不支持反斜杠。

默认值为逗号。
CSV
Escape character 分析数据时要使用的转义字符。

默认值为引号。
CSV
First row contains the header 该选项指定文件是否包含标题。

默认情况下启用。
CSV
Automatically detect file type 自动检测文件类型。 默认值为 true XML
Automatically detect column types 自动从文件内容中检测列类型。 可以在预览表中编辑类型。 如果设置为 false,则推断所有列类型均为 STRING。

默认情况下启用。
* CSV

* JSON
* XML
Rows span multiple lines 列的值是否可以在文件中跨越多行。

默认已禁用。
* CSV

* JSON
Merge the schema across multiple files 是否跨多个文件推理架构并合并每个文件的架构。

默认情况下启用。
CSV
Allow comments 文件中是否允许注释。

默认情况下启用。
JSON
Allow single quotes 文件中是否允许单引号。

默认情况下启用。
JSON
Infer timestamp 是否尝试将时间戳字符串推理为 TimestampType

默认情况下启用。
JSON
Rescued data column 是否保存与架构不匹配的列。 有关详细信息,请参阅什么是补救数据列?

默认情况下启用。
* CSV

* JSON
* Avro
* Parquet
Exclude attribute 是否排除元素中的属性。 默认值为 false XML
Attribute prefix 属性的前缀,用于区分属性和元素。 默认值为 _ XML

列数据类型

支持以下列数据类型。 有关各种数据类型的详细信息,请参阅 SQL 数据类型

数据类型 说明
BIGINT 8 字节带符号整数。
BOOLEAN 布尔(truefalse)值。
DATE 不带时区的日期。
DECIMAL (P,S) 具有最大精度 P 和固定位数 S 的数字。
DOUBLE 8 字节双精度浮点数
STRING 字符串值。
TIMESTAMP 由字段 year、month、day、hour、minute 和 second 的值构成的值,包含会话本地时区。

已知问题

  • 在复杂数据类型中,你可能会遇到特殊字符的问题,例如 JSON 对象中的键包含反撇号或冒号。
  • 某些 JSON 文件可能要求手动选择 JSON 作为文件类型。 若要在选择文件后手动选择文件类型,请单击“高级属性”,关闭“自动检测文件类型”,然后选择“JSON”。
  • 复杂类型中的嵌套时间戳和小数可能会出现问题。