将具有Gen1属性的文件从Gen1 Azur湖复制到Azur Gen2湖(如上次更新)

时间:2020-09-20 16:44:43

标签: azure azure-data-factory azure-data-lake azure-data-factory-2 azure-data-lake-gen2

我需要将所有数据从Azur数据第1代湖迁移到第2代湖。 在我的湖中,我们混合了不同类型的文件(.txt,.zip,.json和许多其他文件)。 我们想将它们原样移动到GEN2湖。除此之外,我们还希望维护所有文件的最新更新时间,即GEN1 lake。

我一直在考虑将ADF用于此用例。但是为此,我们需要定义数据集,并定义数据集,我们必须定义数据格式(Avro,json,xml,二进制等)。由于混合了不同类型的数据,因此我尝试使用二进制格式。但是,使用二进制格式时,目标位置的所有文件的内容类型均为“应用程序/八位流”。也无法保留文件更新时间。

2 个答案:

答案 0 :(得分:0)

正如您所说,将文件复制到Data Lake Gen2时,所有文件属性都会更改,例如“上次修改时间”。

就像文件上传一样,这些文件是第2代中新建的,Azure将为其创建新属性。这就是为什么我们不能在Gen 1中保留旧财产。

使用二进制格式作为数据集时,所有内容类型均为application/octate-stream,我们也无法更改它。

Gen1和Gen 2之间的属性差异(我将文件从Gen 1复制到Gen 2): enter image description here

除非我们下载“ word.csv”文件并重新上传,否则内容类型将更改为application/vnd.ms-excel

enter image description here

HTH。

答案 1 :(得分:0)

上次修改时间是系统元数据,表示文件系统/容器中的修改,并且无法更新。解决方法是添加用户元数据以从源中捕获元数据,并且可以使用powershell / .net / java sdk更新其他属性。下面的变通办法是在PowerShell中实现的

enter image description here