如何使用Azure Synapse Lake数据库和湖表

974 阅读6分钟

本文将让你开始使用Azure Synapse Lake数据库和湖表。

简介

在我之前我们了解了数据结构和数据建模范式的意义,比如数据湖泊的概念。我们还了解了Azure Synapse和Azure Synapse湖数据库的定位是什么。我们还研究了Synapse生态系统的主要组成部分,以及作为其中心的Azure Synapse湖数据库。我们在上一篇文章中从概念上了解了所有这些组件。我们将开始探讨如何建立一个Azure Synapse实例,并在其中注册一个新的湖泊数据库和一个表,这样我们就可以访问其中的数据,这与任何使用Synapse湖泊表的数据的数据消费者同义。

创建Azure Synapse实例

下图从概念上描述了与Azure Synapse湖数据库有关的不同组件。在顶部,我们有Azure Synapse池 - 即无服务器SQL池和Spark池。在底部,我们有Azure数据湖存储,有CSV和Parquet格式的数据文件。因此,很容易就能看出,在这种情况下,我们要具备的第一个前提条件是Azure Synapse实例。

Azure Synapse Lake database overview

假设已经有了一个Azure账户,并具有访问Azure Synapse分析服务所需的权限。打开这个服务的仪表板,在你选择的地区使用默认选项创建一个新实例。实例创建后,打开该实例的仪表板,主页将如下图所示。在入门部分,我们将能够看到一个名为Synapse Studio的瓦片。这是打开控制台的网关,即Azure Synapse Studio,在这里我们可以操作与Azure Synapse有关的不同功能和服务,包括Azure Synapse Lake数据库。我们也可以选择创建一个专门的SQL池,但在这个练习中我们不需要它们。

Synapse Studio

在我们进行下一步之前,另一个先决条件是创建一个Azure Data Lake Storage - Type 2的存储账户,并且至少有一个CSV格式的数据文件,里面有一些样本数据。这是在本练习中进行下一步的重要前提。假设已经满足了这个先决条件的要求,然后再进行接下来的步骤。

创建Azure Synapse Lake数据库

导航到Azure Synapse Studio,然后从主页上点击数据标签。它将打开一个新的页面,我们可以从那里点击+号来探索选项,如下图所示。截至本文起草时,Azure湖泊数据库还处于预览阶段。点击湖泊数据库选项,会打开一个新的向导。

New Lake Database

右侧的属性窗口将显示Azure Synapse湖泊数据库的属性,其默认值如下所示。我们可以先给数据库起一个合适的名字,并对其进行可选的描述。

Database Name

存储设置部分是我们应该仔细配置的重要属性之一。对于任何类型的数据来源,Azure Synapse服务会创建并使用一个链接服务。其中一个链接服务连接到工作区,另一个链接到Azure数据湖存储。我们打算根据存储在数据湖中的数据来创建一个表。通常情况下,人们会以文件的形式在Azure数据湖中积累数据,并希望在这些数据文件的顶部创建元数据结构,这样就可以以所需的方式访问它们。因此,我们将选择与数据湖有关的链接服务。

Storage Properties

当我们选择Azure数据湖作为数据源时,我们需要选择我们的数据所托管的输入文件夹。在这种情况下,我们的数据存储在一个名为sampledata的输入文件夹中。在没有任何可用的链接服务的情况下,可以从Azure Synapse工作室注册一个链接服务,然后它就会开始出现在链接服务选项中,如下所示。在配置了数据湖链接服务和数据湖上的正确位置后,下一步是选择数据的格式。截至本文的草稿,支持的输入格式是CSV(带分隔符的文本)和Parquet。我们将继续使用默认的划线文本选项。理想情况下,人们希望使用像Parquet这样的列式格式,这种格式是高度压缩的,与基于文本的带界线的文件格式相比,可以节省更多空间,提高性能效率。

Linked Service

现在我们已经有了Azure Synapse Lake数据库,我们可以专注于在这个数据库中创建表。点击表选项,如下图所示,我们会发现有三个选项可以创建新表。一个选项是根据模板创建一个表,一个选项是从头开始创建一个自定义表,第三个选项是根据存储在数据湖中的数据创建一个表。由于我们已经在数据湖中以CSV文件的形式存储了数据,我们将选择第三种方案。

Input Folder

一旦我们选择了上述选项,它将在右侧弹出一个新的窗口,如下图所示,以定义新的表。我们可以先给这个表指定一个合适的名字。

External Table

假设我们想创建一个客户的数据,并假设我们存储在Azure数据湖存储账户上的数据在CSV文件中有客户的数据。我们将使用之前使用的Azure数据湖的相同链接服务,这次选择确切的文件,而不是仅仅选择承载数据文件的文件夹。这个文件中的数据将被解析,元数据将从这个文件中推断出来,用于配置表的定义。

Linking file with table

默认情况下,该向导将假定该文件是以逗号为分隔符的CSV类型。我们可以配置所有典型的选项,这些选项在解析带分隔符的文件时都是可用的,如下图所示。我们还可以选择指定数据文件中的第一条记录是否包含列标题。

Delimited File Properties

点击 "预览数据"选项来预览数据,这有助于确定文件是否被解析为所需。预览窗口将如下图所示,我们可以看到数据和列头都被正确读取。

Preview Data

点击 "继续"按钮,继续创建新表。一旦创建了表,它在设计窗格中就会显示如下图所示。我们还可以从字段名左边的小图标中识别字段的数据类型。

Customers Table

现在,表已经创建,是时候测试我们是否可以从这个表中访问数据了。应该注意的是,我们创建的表只是一个元数据定义,而实际的数据,在这种情况下,以数据文件的形式存在于Azure数据湖存储中。点击我们刚刚创建的新表上的行动省略号,并选择选择前100行的选项,如下图所示。

Select Data

这将打开一个新的页面,有一个执行SQL语句的界面,如下图所示。点击 "运行 "按钮来执行这个SQL语句,如果一切都按上面的解释配置好了,我们就可以在结果窗格中查看数据,如下图所示。

Results from SQL Statement

这样,我们就可以使用Azure Data Lake Storage上托管的数据创建Azure Synapse Lake数据库和其中的表。

总结

在这篇文章中,我们学习了如何创建Azure Synapse Lake数据库,并将其配置为创建元数据结构,从Azure Data Lake获取数据。