Azure Data Factory kullanarak Amazon Redshift'ten veri taşıma

Not

Bu makale, Data Factory’nin 1. sürümü için geçerlidir. Data Factory hizmetinin geçerli sürümünü kullanıyorsanız bkz. V2'de Amazon Redshift bağlayıcısı.

Bu makalede, Amazon Redshift'ten veri taşımak için Azure Data Factory'daki Kopyalama Etkinliğinin nasıl kullanılacağı açıklanmaktadır. Makale, kopyalama etkinliğiyle veri taşımaya genel bir genel bakış sunan Veri Taşıma Etkinlikleri makalesini oluşturur.

Data Factory şu anda yalnızca Amazon Redshift'ten desteklenen bir havuz veri deposuna veri taşımayı desteklemektedir. Diğer veri depolarından Amazon Redshift'e veri taşıma desteklenmez.

İpucu

Amazon Redshift'ten büyük miktarda veri kopyalarken en iyi performansı elde etmek için, Amazon Simple Depolama Service (Amazon S3) aracılığıyla yerleşik Redshift UNLOAD komutunu kullanmayı göz önünde bulundurun. Ayrıntılar için bkz. Amazon Redshift'ten veri kopyalamak için UNLOAD kullanma.

Önkoşullar

Başlarken

Amazon Redshift kaynağındaki verileri farklı araçlar ve API'ler kullanarak taşımak için kopyalama etkinliğine sahip bir işlem hattı oluşturabilirsiniz.

İşlem hattı oluşturmanın en kolay yolu Azure Data Factory Kopyalama Sihirbazı'nı kullanmaktır. Kopyalama Sihirbazı'nı kullanarak işlem hattı oluşturma hakkında hızlı bir kılavuz için bkz . Öğretici: Kopyalama Sihirbazı'nı kullanarak işlem hattı oluşturma.

Visual Studio, Azure PowerShell veya diğer araçları kullanarak da işlem hattı oluşturabilirsiniz. İşlem hattını oluşturmak için Azure Resource Manager şablonları, .NET API veya REST API de kullanılabilir. Kopyalama etkinliğiyle işlem hattı oluşturmaya yönelik adım adım yönergeler için Kopyalama Etkinliği öğreticisine bakın.

İster araçları ister API'leri kullanın, bir kaynak veri deposundan havuz veri deposuna veri taşıyan bir işlem hattı oluşturmak için aşağıdaki adımları gerçekleştirirsiniz:

  1. Giriş ve çıkış veri depolarını veri fabrikanıza bağlamak için bağlı hizmetler oluşturun.
  2. Kopyalama işlemi için giriş ve çıkış verilerini temsil eden veri kümeleri oluşturun.
  3. Veri kümesini giriş ve veri kümesini çıkış olarak alan kopyalama etkinliğine sahip bir işlem hattı oluşturun.

Kopyalama Sihirbazı'nı kullandığınızda, bu Data Factory varlıkları için JSON tanımları otomatik olarak oluşturulur. Araçları veya API'leri (.NET API hariç) kullandığınızda, JSON biçimini kullanarak Data Factory varlıklarını tanımlarsınız. JSON örneği: Amazon Redshift'ten Azure Blob depolamaya veri kopyalama, Bir Amazon Redshift veri deposundan veri kopyalamak için kullanılan Data Factory varlıkları için JSON tanımlarını gösterir.

Aşağıdaki bölümlerde, Amazon Redshift için Data Factory varlıklarını tanımlamak için kullanılan JSON özellikleri açıklanmaktadır.

Bağlı hizmet özellikleri

Aşağıdaki tabloda, Bir Amazon Redshift bağlı hizmetine özgü JSON öğeleri için açıklamalar sağlanmaktadır.

Özellik Açıklama Gerekli
Türü Bu özellik AmazonRedshift olarak ayarlanmalıdır. Yes
Sunucu Amazon Redshift sunucusunun IP adresi veya ana bilgisayar adı. Yes
Bağlantı noktası Amazon Redshift sunucusunun istemci bağlantılarını dinlemek için kullandığı TCP bağlantı noktasının sayısı. Hayır (varsayılan değer 5439'dur)
Veritabanı Amazon Redshift veritabanının adı. Yes
Username Veritabanına erişimi olan kullanıcının adı. Yes
parola Kullanıcı hesabının parolası. Yes

Veri kümesi özellikleri

Veri kümelerini tanımlamak için kullanılabilen bölümlerin ve özelliklerin listesi için Veri kümeleri oluşturma makalesine bakın. Yapı, kullanılabilirlik ve ilke bölümleri tüm veri kümesi türleri için benzerdir. Veri kümesi türlerine örnek olarak Azure SQL, Azure Blob depolama ve Azure Tablo depolama verilebilir.

typeProperties bölümü her veri kümesi türü için farklıdır ve verilerin depodaki konumu hakkında bilgi sağlar. Amazon Redshift veri kümesini içeren RelationalTable türünde bir veri kümesinin typeProperties bölümü aşağıdaki özelliklere sahiptir:

Özellik Açıklama Gerekli
Tablename Bağlı hizmetin başvurduğu Amazon Redshift veritabanındaki tablonun adı. Hayır (RelationalSource türünde bir kopyalama etkinliğinin sorgu özelliği belirtilmişse)

Kopyalama Etkinliği özellikleri

Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin listesi için Pipelines oluşturma makalesine bakın. Ad, açıklama, girişler tablosu, çıkışlar tablosu ve ilke özellikleri tüm etkinlik türleri için kullanılabilir. typeProperties bölümünde bulunan özellikler her etkinlik türü için farklılık gösterir. Kopyalama Etkinliği için özellikler, veri kaynaklarının ve havuzların türlerine bağlı olarak değişir.

Kopyalama Etkinliği için, kaynak AmazonRedshiftSource türündeyse typeProperties bölümünde aşağıdaki özellikler kullanılabilir:

Özellik Açıklama Gerekli
Sorgu Verileri okumak için özel sorguyu kullanın. Hayır (bir veri kümesinin tableName özelliği belirtilmişse)
redshiftUnloadSettings Redshift UNLOAD komutunu kullanırken özellik grubunu içerir. No
s3LinkedServiceName Amazon S3'ün geçici mağaza olarak kullanılması. Bağlı hizmet, AwsAccessKey türünde bir Azure Data Factory adı kullanılarak belirtilir. redshiftUnloadSettings özelliği kullanılırken gereklidir
bucketName Ara verileri depolamak için kullanılacak Amazon S3 demetini gösterir. Bu özellik sağlanmazsa, Kopyalama Etkinliği otomatik olarak bir demet oluşturur. redshiftUnloadSettings özelliği kullanılırken gereklidir

Alternatif olarak, Amazon Redshift'i içeren RelationalSource türünü typeProperties bölümünde aşağıdaki özellik ile kullanabilirsiniz. Bu kaynak türünün Redshift UNLOAD komutunu desteklemediği unutmayın.

Özellik Açıklama Gerekli
Sorgu Verileri okumak için özel sorguyu kullanın. Hayır (bir veri kümesinin tableName özelliği belirtilmişse)

Amazon Redshift'ten veri kopyalamak için UNLOAD kullanma

Amazon Redshift UNLOAD komutu, bir sorgunun sonuçlarını Amazon S3'teki bir veya daha fazla dosyaya kaldırır. Bu komut, Redshift'ten büyük veri kümelerini kopyalamak için Amazon tarafından önerilir.

Örnek: Amazon Redshift'ten Azure Synapse Analytics'e veri kopyalama

Bu örnek, Verileri Amazon Redshift'ten Azure Synapse Analytics'e kopyalar. Örnekte Redshift UNLOAD komutu, aşamalı kopyalama verileri ve Microsoft PolyBase kullanılır.

Bu örnek kullanım örneği için, Copy Activity ilk olarak verileri redshiftUnloadSettings seçeneğinde yapılandırıldığı şekilde Amazon Redshift'ten Amazon S3'e kaldırır. Ardından veriler, hazırlamaAyarlar seçeneğinde belirtildiği gibi Amazon S3'ten Azure Blob depolamaya kopyalanır. Son olarak PolyBase verileri Azure Synapse Analytics'e yükler. Tüm ara biçimler Kopyalama Etkinliği tarafından işlenir.

Copy workflow from Amazon Redshift to Azure Synapse Analytics

{
    "name": "CopyFromRedshiftToSQLDW",
    "type": "Copy",
    "typeProperties": {
        "source": {
            "type": "AmazonRedshiftSource",
            "query": "select * from MyTable",
            "redshiftUnloadSettings": {
                "s3LinkedServiceName":"MyAmazonS3StorageLinkedService",
                "bucketName": "bucketForUnload"
            }
        },
        "sink": {
            "type": "SqlDWSink",
            "allowPolyBase": true
        },
        "enableStaging": true,
        "stagingSettings": {
            "linkedServiceName": "MyAzureStorageLinkedService",
            "path": "adfstagingcopydata"
        },
        "cloudDataMovementUnits": 32
        .....
    }
}

JSON örneği: Amazon Redshift'ten Azure Blob depolamaya veri kopyalama

Bu örnekte, Amazon Redshift veritabanından Azure Blob Depolama'a nasıl veri kopyalanacak gösterilmektedir. Kopyalama Etkinliği kullanılarak veriler doğrudan desteklenen herhangi bir havuza kopyalanabilir.

Örnekte aşağıdaki veri fabrikası varlıkları vardır:

Örnek, Amazon Redshift'teki bir sorgu sonucundaki verileri saatlik olarak Azure blob'ına kopyalar. Örnekte kullanılan JSON özellikleri, varlık tanımlarını izleyen bölümlerde açıklanmıştır.

Amazon Redshift bağlı hizmeti

{
    "name": "AmazonRedshiftLinkedService",
    "properties":
    {
        "type": "AmazonRedshift",
        "typeProperties":
        {
            "server": "< The IP address or host name of the Amazon Redshift server >",
            "port": "<The number of the TCP port that the Amazon Redshift server uses to listen for client connections.>",
            "database": "<The database name of the Amazon Redshift database>",
            "username": "<username>",
            "password": "<password>"
        }
    }
}

Azure Blob depolama bağlı hizmeti

{
  "name": "AzureStorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Amazon Redshift giriş veri kümesi

Data Factory hizmetine veri kümesinin veri fabrikası dışında olduğunu bildirmek için dış özellik "true" olarak ayarlanır. Bu özellik ayarı, veri kümesinin veri fabrikasındaki bir etkinlik tarafından üretilmediğini gösterir. İşlem hattındaki bir etkinlik tarafından üretilmeyen bir giriş veri kümesinde özelliğini true olarak ayarlayın.

{
    "name": "AmazonRedshiftInputDataset",
    "properties": {
        "type": "RelationalTable",
        "linkedServiceName": "AmazonRedshiftLinkedService",
        "typeProperties": {
            "tableName": "<Table name>"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true
    }
}

Azure Blob çıktı veri kümesi

Frequency özelliği " Hour" ve interval özelliği 1 olarak ayarlanarak veriler saatte bir yeni bir bloba yazılır. Blob için folderPath özelliği dinamik olarak değerlendirilir. Özellik değeri, işlenen dilimin başlangıç saatini temel alır. Klasör yolu başlangıç saatinin yıl, ay, gün ve saat bölümlerini kullanır.

{
    "name": "AzureBlobOutputDataSet",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/fromamazonredshift/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            },
            "partitionedBy": [
                {
                    "name": "Year",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "yyyy"
                    }
                },
                {
                    "name": "Month",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "MM"
                    }
                },
                {
                    "name": "Day",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "dd"
                    }
                },
                {
                    "name": "Hour",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "HH"
                    }
                }
            ]
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Azure Redshift kaynağı (RelationalSource türünde) ve Azure Blob havuzu içeren bir işlem hattında Kopyalama etkinliği

İşlem hattı, giriş ve çıkış veri kümelerini kullanacak şekilde yapılandırılmış bir kopyalama etkinliği içerir. İşlem hattı saatte bir çalışacak şekilde zamanlanır. İşlem hattının JSON tanımında kaynak türü RelationalSource ve havuz türü blobSink olarak ayarlanır. Sorgu özelliği için belirtilen SQL sorgusu, son bir saat içinde kopyalanacak verileri seçer.

{
    "name": "CopyAmazonRedshiftToBlob",
    "properties": {
        "description": "pipeline for copy activity",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "AmazonRedshiftSource",
                        "query": "$$Text.Format('select * from MyTable where timestamp >= \\'{0:yyyy-MM-ddTHH:mm:ss}\\' AND timestamp < \\'{1:yyyy-MM-ddTHH:mm:ss}\\'', WindowStart, WindowEnd)",
                        "redshiftUnloadSettings": {
                            "s3LinkedServiceName":"myS3Storage",
                            "bucketName": "bucketForUnload"
                        }
                    },
                    "sink": {
                        "type": "BlobSink",
                        "writeBatchSize": 0,
                        "writeBatchTimeout": "00:00:00"
                    },
                    "cloudDataMovementUnits": 32
                },
                "inputs": [
                    {
                        "name": "AmazonRedshiftInputDataset"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobOutputDataSet"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "AmazonRedshiftToBlob"
            }
        ],
        "start": "2014-06-01T18:00:00Z",
        "end": "2014-06-01T19:00:00Z"
    }
}

Amazon Redshift için tür eşleme

Veri taşıma etkinlikleri makalesinde belirtildiği gibi, Kopyalama Etkinliği kaynak türünden havuz türüne otomatik tür dönüştürmeleri gerçekleştirir. Türler iki adımlı bir yaklaşım kullanılarak dönüştürülür:

  1. Yerel kaynak türünden .NET türüne dönüştürme
  2. .NET türünden yerel havuz türüne dönüştürme

Kopyalama Etkinliği, Verileri Amazon Redshift türünden .NET türüne dönüştürdüğünde aşağıdaki eşlemeler kullanılır:

Amazon Redshift türü .NET türü
SMALLİNT Int16
TAMSAYI Int32
BİGİNT Int64
ON -DA -LIK Ondalık
GERÇEK SAYI Tek
ÇIFT DUYARLıK Çift
BOOLEAN Dize
CHAR Dize
VARCHAR Dize
DATE DateTime
TIMESTAMP DateTime
TEXT Dize

Kaynağı havuz sütunlarına eşleme

Kaynak veri kümesindeki sütunları havuz veri kümesindeki sütunlara eşlemeyi öğrenmek için bkz. Azure Data Factory'da veri kümesi sütunlarını eşleme.

İlişkisel kaynaklardan tekrarlanabilir okumalar

İlişkisel veri deposundan veri kopyalarken, istenmeyen sonuçlardan kaçınmak için yinelenebilirliği göz önünde bulundurun. Azure Data Factory dilimleri el ile yeniden çalıştırabilirsiniz. Bir hata oluştuğunda dilimi yeniden çalıştırmak için veri kümesi için yeniden deneme ilkesini de yapılandırabilirsiniz. Dilim kaç kez yeniden çalıştırılırsa çalıştırsın, aynı verilerin okundığından emin olun. Ayrıca dilimi nasıl yeniden çalıştırdığınızdan bağımsız olarak aynı verilerin okundığından emin olun. Daha fazla bilgi için bkz. İlişkisel kaynaklardan tekrarlanabilir okumalar.

Performans ve ayar

Kopyalama Etkinliği performansını etkileyen önemli faktörler ve Kopyalama Etkinliği Performansı ve Ayarlama Kılavuzu'nda performansı iyileştirme yolları hakkında bilgi edinin.

Sonraki adımlar

Kopyalama Etkinliği ile işlem hattı oluşturmaya yönelik adım adım yönergeler için Kopyalama Etkinliği öğreticisine bakın.