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
- Jika Anda memindahkan data ke penyimpanan data lokal, instal Data Management Gateway di mesin lokal. Berikan akses untuk gateway ke kluster Amazon Redshift dengan menggunakan alamat IP mesin lokal. Untuk mengetahui petunjuknya, lihat Mengotorisasi akses ke kluster.
- Untuk memindahkan data ke penyimpanan data Azure, lihat alamat IP Komputasi dan rentang SQL yang digunakan oleh Microsoft Azure Datacenters.
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:
- Buat layanan tertaut untuk menautkan penyimpanan data input dan output ke data factory Anda.
- Buat himpunan data untuk merepresentasikan data input dan output untuk operasi salin.
- 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.
{
"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:
- Layanan tertaut jenis AmazonRedshift
- Layanan tertaut jenis AzureStorage.
- Sebuah input himpunan data jenis RelationalTable
- Sebuah himpunan data output dari jenis AzureBlob
- Alur dengan aktivitas salinan yang menggunakan properti RelationalSource dan BlobSink
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:
- Konversi dari jenis sumber asli ke jenis .NET
- 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.