使用标准、高级或企业订阅将在数据湖中登陆数据
您可以设置在数据湖中登陆数据任务,将数据登陆到以下目标:
Amazon S3
有关配置与 AmazonS3 的连接的信息,请参阅Amazon S3。
Azure Data Lake Storage
有关配置与 Azure 数据湖存储的连接的信息,请参阅Azure Data Lake Storage。
Google Cloud Storage
有关配置与 Google Cloud Storage 的连接的信息,请参阅Google Cloud Storage。
有关配置与数据源的连接的信息,请参阅设置与数据源的连接
要设置数据湖登陆任务,请执行以下操作:
在数据集成 > 项目中,单击创建项目。
在新建项目对话框中,执行以下操作:
为您的项目提供名称。
- 选择要在其中创建项目的空间。
- 任选地,提供描述。
- 选择复制作为用例。
- 如果要创建一个空项目而不配置任何设置,请清除打开复选框(可选)。
单击创建。
将出现以下情况之一:
- 如果选择了新建项目对话框中的打开复选框(默认值),则项目将打开。
- 如果清除了新建项目对话框中的打开复选框,则该项目将添加到项目列表中。您可以稍后通过从项目的 菜单中选择打开来打开项目。
项目打开后,单击登陆数据湖中的数据。
登陆数据湖中的数据向导打开。
在常规选项卡中,指定数据湖平台任务的名称和说明。然后单击下一步。
信息注释不支持包含斜杠 (/) 或反斜杠 (\) 字符的名称。在选择源连接选项卡中,选择到源数据的连接。从操作列中的菜单中选择编辑,可以选择编辑连接设置。
如果您还没有到源数据的连接,则需要先创建一个,方法是单击选项卡右上角的创建连接。
您可以使用左侧的筛选器筛选连接列表。可以根据源类型、网关、空间和所有者筛选连接。连接列表上方的所有筛选器按钮显示当前筛选器的数量。您可以使用此按钮关闭或打开左侧的筛选器面板。当前活动的筛选器也显示在可用连接列表的上方。
您也可以从右侧的下拉列表中选择上次修改时间、上次创建时间或按字母数字顺序来对列表进行排序。单击列表右侧的箭头可以更改排序顺序。
选择数据源连接后,可以选择单击选项卡右上角的测试连接(推荐),然后单击下一步。
在选择数据集选项卡中,选择要包含在数据湖登陆任务中的表和/或视图。您还可以使用通配符并创建选择规则,如从数据库选择数据中所述。
信息注释不支持模式名称或包含斜杠 (/) 或反斜杠 (\) 字符的表名称。在选择目标连接选项卡中,从可用连接列表中选择目标,然后单击下一步。在功能方面,该选项卡与前面描述的选择源连接选项卡相同。
在设置选项卡中,可以选择更改以下设置,然后单击下一步。
更新方法:
更改数据捕获 (CDC):数据湖登陆任务从满负载开始(在此期间,所有选定的表都将登陆)。然后使用 CDC(更改数据捕获)技术使登陆数据保持最新。
信息注释不支持 DDL 操作的 CDC(更改数据捕获)。使用 数据移动网关 时,几乎实时地从源捕获更改。不使用 数据移动网关 时,将根据调度程序设置捕获更改。有关更多信息,请参阅在不使用 数据移动网关 进行工作的情况下安排任务。
- 重新加载将数据从选定的源表完全加载到目标平台,并在必要时创建目标表。任务启动时会自动进行满负载,但也可以手动执行或根据需要安排定期进行。
如果您选择更改数据捕获 (CDC),并且您的数据还包含不支持 CDC 的表或视图,则将创建两个数据管道。一个管道包含所有支持 CDC 的表,另一个管道则包含使用重新加载的所有其他表和视图。
要使用的文件夹:
根据要将文件写入的存储段文件夹,选择以下选项之一:
- 默认文件夹:默认文件夹格式为 <your-project-name>/<your-task-name>
- 根文件夹:文件将直接写入存储段。
文件夹:输入文件夹名称。如果该文件夹不存在,将在数据湖登陆任务期间创建该文件夹。
信息注释 文件夹名称不能包含特殊字符(例如 @、#、 ! 等)。
在摘要选项卡中,将显示数据管道的可视化信息。选择是打开<name>任务还是什么都不做。然后单击创建。
根据您的选择,将打开任务或显示项目列表。
如果选择打开任务,数据集选项卡将显示所选数据资产表的结构和元数据。这包括所有显式列出的表以及与选择规则匹配的表。
如果要从数据源中添加更多表,请单击选择源数据。
可选择如 云存储目标的设置 中所述更改任务设置。
您可以对数据集执行转换、筛选数据或添加列。
有关更多信息,请参阅管理数据集。
添加所需的转换后,可以通过单击验证数据集来验证数据集。如果验证失败,请先解决错误,然后再继续。
有关更多信息,请参阅验证和调整数据集。
准备好后,单击准备对登陆任务进行编目并准备好执行。
准备好数据任务后,单击运行。
数据湖登陆任务现在应该开始了。您可以在监视器视图中监视其进度。有关更多信息,请参阅监视单个数据任务
设置数据集的加载优先级
您可以通过为每个数据集指定加载优先级来控制数据任务中数据集的加载顺序。例如,如果您想先加载较小的数据集,然后再加载较大的数据集,这就很有用。
点击加载优先级。
为每个数据集选择加载优先级。
默认加载优先级为正常。数据集将按以下优先顺序加载:
最高
较高
高
正常
低
较低
最低
具有相同优先级的数据集不分先后加载。
单击确定。
正在刷新元数据
您可以刷新任务中的元数据,以与任务的设计视图中源元数据的更改保持一致。对于使用 Metadata manager 的 SaaS 应用程序,必须先刷新 Metadata manager,然后才能刷新数据任务中的元数据。
您可以:
单击 ...,然后刷新元数据以刷新任务中所有数据集的元数据。
点击在数据集中的某个数据集上的 ...,然后刷新元数据以刷新单个数据集的元数据。
您可以在屏幕下部的刷新元数据下查看元数据刷新的状态。通过将光标悬停在 上,您可以看到元数据上次刷新的时间。
准备数据任务才能应用更改。
准备好数据任务并应用更改后,将从刷新元数据中删除这些更改。
您必须准备使用此任务的存储任务来传播更改。
如果删除列,则会添加一个具有 Null 值的转换,以确保存储不会丢失历史数据。
刷新元数据的限制
如果数据类型和数据长度相同,则在此之前在同一时隙中具有删除列的重命名将被转换为删除列重命名。
示例:
之前:a b c d
之后:a c1 d
在这个例子中,b 被删除,c 被重命名为 c1,b 和 c 具有相同的数据类型和数据长度。
这将被识别为 b 到 c1 并删除 c 的重命名。
即使删除了最后一列,并且其前面的一列被重命名,也无法识别最后一列的重命名。
示例:
之前:a b c d
之后:a b c1
在这个例子中,d 被删除,c 被重命名为 c1。
这将被识别为 c 和 d 的删除,以及 c1 的添加。
假设在末尾添加了新列。如果在中间添加与下一列具有相同数据类型的列,则可能会将其解释为删除和重命名。
模式演变
模式演化允许您轻松检测多个数据源的结构更改,然后控制这些更改将如何应用于您的任务。模式演化可用于检测对源数据模式所做的 DDL 更改。您还可以自动应用一些更改。
对于每种更改类型,您可以在任务设置的模式演变部分选择如何处理更改。您可以应用更改、忽略更改、挂起表或停止任务处理。
您可以设置用于处理每种更改类型的 DDL 更改的操作。某些操作并不适用于所有更改类型。
应用于目标
自动应用更改。
忽略
忽略更改。
挂起表
挂起表。监视器将显示表格错误。
停止任务
停止任务处理。如果您想手动处理所有模式更改,这很有用。这也将停止调度,即不会执行计划运行。
支持以下更改:
添加列
重命名列
更改列数据类型
添加符合选择模式的表格
如果使用选择规则添加与模式匹配的数据集,则将检测并添加符合模式的新表。
有关任务设置的更多信息,请参阅模式演变。
您还可以获得有关使用模式演进处理的变更的通知。有关更多信息,请参阅设置操作更改通知。
模式演变的限制
模式演变有以下限制适用:
只有使用 CDC 作为更新方法时,才支持模式演变。
更改模式演变设置后,必须重新准备任务。
如果重新命名表,则不支持模式演变。在这种情况下,您必须在准备任务前刷新元数据。
如果您正在设计任务,则必须刷新浏览器才能接收模式演变更改。您可以设置通知,以便在更改时收到警报。
在登陆任务中,不支持删除列。删除列和添加列会导致表格错误。
在登陆任务中,删除表操作不会将表丢弃。如果删除一个表后再添加一个表,只会截断旧表,而不会添加新表。
并非所有目标都能更改列的长度,这取决于目标数据库的支持情况。
如果更改了列名,使用该列定义的显式转换将不会生效,因为这些转换是基于列名的。
刷新元数据的限制也适用于模式演变。
捕获 DDL 更改时,会受到以下限制:
当源数据库中发生一系列快速操作时(例如,DDL > DML > DDL),Qlik Talend Data Integration 可能会以错误的顺序解析日志,导致数据丢失或行为不可预测。为了尽量减少这种情况发生的可能性,最佳做法是等待更改应用于目标,然后再执行下一个操作。
例如,在变更捕获过程中,如果源表被快速连续重命名多次(第二次操作将其重命名回原始名称),则可能会遇到该表已存在于目标数据库中的错误。
- 如果更改任务中使用的表的名称,然后停止任务,则在任务恢复后 Qlik Talend Data Integration 将不会捕获对该表所做的任何更改。
不支持在任务停止时重命名源表。
- 不支持重新分配表的主键列(因此不会写入 DDL 历史控制表)。
- 当一列的数据类型发生变化,并且在任务停止时重命名了(相同的)列时,DDL 更改将在任务恢复时在 DDL 历史控制表中显示为“删除列”,然后显示为“添加列”。请注意,延迟延长也可能导致相同的行为。
- 在任务停止时对源执行的 CREATE TABLE 操作将在任务恢复时应用于目标,但不会在 DDL 历史控制表中记录为 DDL。
与元数据更改相关的操作(如 ALTER TABLE、reorg、重建聚集索引等)如果在以下情况下执行,可能会导致不可预测的行为:
满负载期间
-或者-
在开始处理更改自时间戳和当前时间之间(即用户在高级运行选项对话框中单击确定的时刻)。
示例:
IF:
指定的开始处理更改自时间为上午 10:00。
AND:
上午 10:10 时,雇员表中添加了名为年龄的列。
AND:
上午 10:15,用户在高级运行选项对话框中单击确定。
THEN:
10:00 至 10:10 之间发生的更改可能会导致 CDC 错误。
信息注释在上述任何情况下,必须重新加载受影响的表,以便数据正确已移动到目标。
- DDL 语句
ALTER TABLE ADD/MODIFY <column> <data_type> DEFAULT <>
不会将默认值复制到目标,并且新的/修改的列设置为 NULL。请注意,即使过去执行了添加/修改列的 DDL,也可能发生这种情况。如果新的/修改的列可以为空,则源端点会在记录 DDL 本身之前更新所有表行。因此,Qlik Talend Data Integration 会捕获更改,但不会更新目标。由于新列/修改列被设置为 NULL,如果目标表没有主键/唯一索引,后续更新将生成 "零行受影响 "消息。 不会捕获对 TIMESTAMP 和 DATE 精确度列的修改。
登陆数据湖中数据时的限制和注意事项
转换受以下限制:
- 语序为从右向左的语言的列不支持转换。
无法对名称中包含特殊字符(例如 #、\、/、-)的列执行转换。
- LOB/CLOB 数据类型唯一支持的转换是删除目标上的列。
- 不支持使用转换重命名列,然后添加同名的新列。
移动的列不支持更改可空性,无论是直接更改还是使用转换规则。但是,默认情况下,任务中创建的新列可以为空。