Memindahkan data dari Amazon Redshift dengan menggunakan Azure Data Factory

Catatan

Artikel ini berlaku untuk versi 1 dari Azure Data Factory. Jika Anda menggunakan versi layanan Azure Data Factory saat ini, lihat konektor Amazon Redshift di V2.

Artikel ini menjelaskan cara menggunakan aktivitas salin di Azure Data Factory untuk memindahkan data dari server Amazon Redshift. Ini dibuat pada artikel Aktivitas Pergerakan Data, yang menyajikan ikhtisar umum pergerakan data dengan aktivitas salin.

Data Factory saat ini hanya mendukung pemindahan data dari Amazon Redshift ke penyimpanan data sink yang didukung. Memindahkan data dari penyimpanan data lain ke Amazon Redshift tidak didukung.

Tip

Untuk mencapai kinerja terbaik saat menyalin data dalam jumlah besar dari Amazon Redshift, pertimbangkan untuk menggunakan perintah LEPASKAN Redshift bawaan melalui Amazon Simple Storage Service (Amazon S3). Untuk detailnya, lihat Menggunakan LEPASKAN untuk menyalin data dari Amazon Redshift.

Prasyarat

Memulai

Anda dapat membuat alur dengan aktivitas salin untuk memindahkan data dari sumber Amazon Redshift dengan menggunakan alat dan API yang berbeda.

Cara termudah untuk membuat alur adalah dengan menggunakan Wizard Salin Azure Data Factory. Untuk panduan cepat membuat alur dengan menggunakan Wizard Salin, lihat Tutorial: Membuat alur menggunakan Wizard Salin.

Anda juga bisa membuat alur dengan menggunakan Visual Studio, Azure PowerShell, atau alat lainnya. Template Azure Resource Manager, .NET API, atau REST API juga dapat digunakan untuk membuat alur. Untuk instruksi langkah demi langkah guna membuat alur dengan aktivitas salin, lihat Tutorial Aktivitas Salin.

Baik Anda menggunakan alat atau API, Anda melakukan langkah-langkah berikut untuk membuat alur yang memindahkan data dari penyimpanan data sumber ke penyimpanan data sink:

  1. Buat layanan tertaut untuk menautkan penyimpanan data input dan output ke data factory Anda.
  2. Buat himpunan data untuk merepresentasikan data input dan output untuk operasi salin.
  3. Buat alur dengan aktivitas salin yang mengambil himpunan data sebagai input dan himpunan data sebagai output.

Saat Anda menggunakan Wizard Salin, definisi JSON untuk entitas Azure Data Factory ini secara otomatis dibuat. Saat Anda menggunakan alat atau API (kecuali .NET API), Anda menentukan entitas Azure Data Factory ini menggunakan format JSON. Contoh JSON: Menyalin data dari Amazon Redshift ke penyimpanan Azure Blob menunjukkan definisi JSON untuk entitas Azure Data Factory yang digunakan untuk menyalin data dari penyimpanan data Amazon Redshift.

Bagian berikut menjelaskan properti JSON yang digunakan untuk menentukan entitas Azure Data Factory untuk Amazon Redshift.

Properti layanan tertaut

Tabel berikut ini menyediakan deskripsi untuk elemen JSON yang khusus untuk layanan tertaut Amazon Redshift.

Properti Deskripsi Diperlukan
jenis Properti ini harus diatur ke AmazonRedshift. Ya
server Alamat IP atau nama host server Amazon Redshift. Ya
port Nomor port TCP yang digunakan server Amazon Redshift untuk mendengarkan sambungan klien. Tidak (defaultnya adalah 5439)
database Nama server Amazon Redshift. Ya
username Nama pengguna yang memiliki akses ke database. Ya
password Kata sandi untuk akun pengguna. Ya

Properti himpunan data

Untuk daftar bagian dan properti yang tersedia untuk menentukan himpunan data, lihat artikel Membuat himpunan data. Bagian struktur, ketersediaan, dan kebijakan serupa untuk semua jenis himpunan data. Contoh jenis himpunan data termasuk Azure SQL, Azure Blob Storage, dan Azure Table Storage.

Bagian typeProperties berbeda untuk setiap jenis himpunan data dan memberikan informasi tentang lokasi data di penyimpanan. Bagian typeProperties untuk himpunan data jenis RelationalTable, yang mencakup himpunan data Amazon Redshift, memiliki properti berikut:

Properti Deskripsi Diperlukan
tableName Nama tabel dalam database Amazon Redshift yang dirujuk oleh layanan tertaut. Tidak (jika properti kueri dari aktivitas salin jenis RelationalSource ditentukan)

Properti Aktivitas Salin

Untuk daftar bagian dan properti yang tersedia untuk menentukan aktivitas, lihat artikel Membuat Alur. Properti seperti nama, deskripsi, tabel input, tabel output, dan kebijakan tersedia untuk semua jenis aktivitas. Properti yang tersedia di bagian typeProperties aktivitas berbeda-beda untuk setiap jenis aktivitas. Untuk aktivitas salin, properti jenis bervariasi bergantung pada jenis sumber dan sink.

Untuk Aktivitas Salin, bila sumbernya berjenis AmazonRedshiftSource, properti berikut tersedia di bagian typeProperties:

Properti Deskripsi Diperlukan
kueri Gunakan kueri kustom untuk membaca data. Tidak (jika properti tableName dari himpunan data ditentukan)
redshiftUnloadSettings Berisi grup properti ketika menggunakan perintah LEPASKANpada Redshift. Tidak
s3LinkedServiceName Amazon S3 untuk digunakan sebagai penyimpanan sementara. Layanan yang ditautkan ditentukan dengan menggunakan nama jenis Azure Data Factory dari AwsAccessKey. Diperlukan saat menggunakan properti redshiftUnloadSettings
bucketName Menunjukkan bucket Amazon S3 untuk digunakan dengan tujuan menyimpan data sementara. Jika properti ini tidak disediakan, Aktivitas Salin secara otomatis menghasilkan bucket. Diperlukan saat menggunakan properti redshiftUnloadSettings

Atau, Anda dapat menggunakan jenis RelationalSource, yang mencakup Amazon Redshift, dengan properti berikut di bagian typeProperties. Perhatikan bahwa jenis sumber ini tidak mendukung perintah LEPASKAN pada Redshift.

Properti Deskripsi Diperlukan
kueri Gunakan kueri kustom untuk membaca data. Tidak (jika properti tableName dari himpunan data ditentukan)

Menggunakan LEPASKAN untuk menyalin data dari Amazon Redshift

Perintah Amazon Redshift LEPASKAN membongkar hasil kueri ke satu atau beberapa file di Amazon S3. Perintah ini direkomendasikan oleh Amazon untuk menyalin himpunan data besar dari Redshift.

Contoh: Menyalin data dari Amazon Redshift ke Azure Synapse Analytics

Contoh ini menyalin data dari Amazon Redshift ke Azure Synapse Analytics. Contohnya menggunakan perintah Redshift LEPASKAN, data salinan terpentaskan, dan Microsoft PolyBase.

Untuk kasus penggunaan sampel ini, Copy Activity terlebih dahulu melepaskan data dari Amazon Redshift ke Amazon S3 seperti yang dikonfigurasi dalam opsi redshiftUnloadSettings. Selanjutnya, data disalin dari Amazon S3 ke Azure Blob Storage seperti yang ditentukan dalam opsi stagingSettings. Akhirnya, PolyBase memuat data ke Azure Synapse Analytics. Semua format sementara ditangani oleh Aktivitas Salin.

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
        .....
    }
}

Contoh JSON: Menyalin data dari Amazon Redshift ke Azure Blob storage

Contoh ini menunjukkan cara menyalin data dari database Amazon Redshift ke Azure Blob Storage. Data dapat disalin langsung ke sink yang didukung dengan menggunakan Aktivitas Salin.

Sampel memiliki entitas Data Factory berikut:

Sampel menyalin data dari hasil kueri di Amazon Redshift ke Azure blob per jam. Properti JSON yang digunakan dalam sampel dijelaskan dalam bagian yang mengikuti definisi entitas.

Layanan tertaut Amazon Redshift

{
    "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>"
        }
    }
}

Layanan tertaut Azure Blob storage

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

Himpunan data input Amazon Redshift

Properti eksternal diatur ke "true" untuk menginformasikan layanan Azure Data Factory bahwa himpunan data berada di luar data factory. Pengaturan properti ini menunjukkan bahwa himpunan data tidak dihasilkan oleh aktivitas di data factory. Atur properti ini ke true pada himpunan data input yang tidak dihasilkan oleh aktivitas di alur.

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

Himpunan data output Azure Blob

Data ditulis ke blob baru setiap jam dengan mengatur properti frekuensi ke "Jam" dan properti interval ke 1. Properti folderPath untuk blob dievaluasi secara dinamis. Nilai properti didasarkan pada waktu mulai irisan yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, hari, dan jam dari waktu mulai.

{
    "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
        }
    }
}

Menyalin aktivitas dalam alur dengan sumber Azure Redshift (jenis RelationalSource) dan sink Azure Blob

Alur berisi aktivitas salin yang dikonfigurasi untuk menggunakan himpunan data input dan output. Alur dijadwalkan untuk berjalan setiap jam. Dalam definisi JSON untuk alur, jenis sumber diatur ke RelationalSource dan jenis sink diatur ke BlobSink. Kueri SQL yang ditentukan untuk properti kueri memilih data dalam satu jam terakhir untuk disalin.

{
    "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"
    }
}

Jenis pemetaan untuk Amazon Redshift

Seperti disebutkan dalam artikel aktivitas perpindahan data, Aktivitas Salin melakukan konversi jenis otomatis dari jenis sumber ke jenis sink. Jenis dikonversi dengan menggunakan pendekatan dua langkah:

  1. Konversi dari jenis sumber asli ke jenis .NET
  2. Konversi dari jenis .NET ke jenis sink asli

Pemetaan berikut digunakan saat Aktivitas Salin mengonversi data dari jenis Amazon Redshift menjadi jenis .NET:

Tipe Amazon Redshift Jenis .NET
SMALLINT Int16
INTEGER Int32
BIGINT Int64
DECIMAL Decimal
REAL Tunggal
PRESISI DOBEL Dobel
BOOLEAN String
CHAR String
VARCHAR String
TANGGAL DateTime
TIMESTAMP DateTime
TEXT String

Memetakan sumber untuk kolom sink

Untuk mempelajari selengkapnya tentang pemetaan kolom di himpunan data sumber ke kolom di himpunan data sink, lihat Memetakan kolom himpunan data di Azure Data Factory.

Bacaan berulang dari sumber relasional

Saat menyalin data dari penyimpanan data relasional, ingatlah bahwa pengulangan ditujukan untuk menghindari hasil yang tidak diinginkan. Di Azure Data Factory, Anda dapat menjalankan ulang irisan secara manual. Anda juga dapat mengonfigurasi properti kebijakan coba kembali untuk himpunan data untuk menjalankan ulang irisan saat kegagalan terjadi. Pastikan bahwa data yang sama dibaca, tidak peduli berapa kali irisan dijalankan ulang. Pastikan juga bahwa data yang sama dibaca terlepas dari cara Anda menjalankan ulang irisan. Untuk informasi selengkapnya, lihat Bacaan berulang dari sumber relasional.

Kinerja dan penyetelan

Pelajari tentang faktor utama yang memengaruhi kinerja Aktivitas Salin dan cara mengoptimalkan kinerja di Panduan Kinerja dan Penyetelan Aktivitas Salin.

Langkah berikutnya

Untuk instruksi langkah demi langkah guna membuat alur dengan aktivitas salin, lihat Tutorial aktivitas salin.