Ftp 使用Azure Data Factory(不带MapReduce)将存档导入并解压缩到Blob存储
我必须将各种zip文件从ftp服务器导入一些Azure SQL表。每个zip文件最多包含10个具有不同结构的文本(csv)文件,即第一个文本文件中的行的格式相同 “1 |星期一| 2017-03-20 | 345671” 第二个文本文件中的行的格式如下: “abc | 345894 | xyz | 2 | yyy | true | 3”Ftp 使用Azure Data Factory(不带MapReduce)将存档导入并解压缩到Blob存储,ftp,zip,compression,azure-data-factory,azure-blob-storage,Ftp,Zip,Compression,Azure Data Factory,Azure Blob Storage,我必须将各种zip文件从ftp服务器导入一些Azure SQL表。每个zip文件最多包含10个具有不同结构的文本(csv)文件,即第一个文本文件中的行的格式相同 “1 |星期一| 2017-03-20 | 345671” 第二个文本文件中的行的格式如下: “abc | 345894 | xyz | 2 | yyy | true | 3” 我不想使用MapReduce(或自定义活动),因为它既昂贵又缓慢(Microsoft Azure支持建议首先使用HDInsight(按需)MapReduce活动
我不想使用MapReduce(或自定义活动),因为它既昂贵又缓慢(Microsoft Azure支持建议首先使用HDInsight(按需)MapReduce活动来解压缩文件)。为我定义必要的链接服务,即FTP链接服务,然后使用FileShare类型的数据集从源获取文件(FTP服务器)。在此数据集中,断言文件已压缩:
{
"name": "myFTPFileInput",
"properties": {
"published": false,
"type": "FileShare",
"linkedServiceName": "myFTPLinkedService",
"typeProperties": {
"fileName": "xyz20170316.zip",
"useBinaryTransfer": "true",
"folderPath": "/Products/xyzProducts",
"compression": {
"type": "ZipDeflate",
"level": "Optimal"
}
},
"availability": {
"frequency": "Day",
"interval": 15
},
"external": true,
"policy": {}
}
}
使用Blobsink将文件写入blob存储:
{
"name": "myAzureBlobOutput",
"properties": {
"published": false,
"type": "AzureBlob",
"linkedServiceName": "myAzureStorageLinkedService",
"typeProperties": {
"folderPath": "mytest/ftp/xyz/{Year}/{Month}",
"format": {
"type": "TextFormat",
"rowDelimiter": "\n",
"columnDelimiter": "|"
},
"partitionedBy": [
{
"name": "Year",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "yyyy"
}
},
{
"name": "Month",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "MM"
}
}
]
},
"availability": {
"frequency": "Day",
"interval": 15
}
}
}
数据将被解压并作为文本写入指定的文件夹。从那里我可以使用标准的ADF复制活动将每个文件导入相应的Azure SQL表
希望这有帮助