AWS Data Pipeline tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada dari AWS Data Pipeline dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
RedshiftCopyActivity
Menyalin data dari DynamoDB atau Amazon S3 ke Amazon Redshift. Anda dapat memuat data ke dalam tabel baru, atau dengan mudah menggabungkan data ke dalam tabel yang ada.
Berikut ini adalah gambaran umum kasus penggunaan di mana untuk menggunakan RedshiftCopyActivity
:
-
Mulailah dengan menggunakan AWS Data Pipeline untuk mementaskan data Anda di Amazon S3.
-
Gunakan
RedshiftCopyActivity
untuk memindahkan data dari Amazon RDS dan Amazon EMR ke Amazon Redshift.Hal ini memungkinkan Anda memuat data Anda ke Amazon Redshift di mana Anda dapat menganalisisnya.
-
Gunakan SqlActivity untuk melakukan SQL kueri pada data yang telah dimuat ke Amazon Redshift.
Selain itu, RedshiftCopyActivity
memungkinkan Anda bekerja dengan S3DataNode
, karena men-support file manifes. Untuk informasi selengkapnya, lihat S3 DataNode.
Contoh
Berikut adalah contoh dari jenis objek ini.
Untuk memastikan konversi format, contoh ini menggunakan EMPTYASNULLdan parameter konversi IGNOREBLANKLINESkhusus dicommandOptions
. Untuk informasi, lihat Parameter Konversi Data di Panduan Developer Basis Data Amazon Redshift.
{ "id" : "S3ToRedshiftCopyActivity", "type" : "RedshiftCopyActivity", "input" : { "ref": "MyS3DataNode" }, "output" : { "ref": "MyRedshiftDataNode" }, "insertMode" : "KEEP_EXISTING", "schedule" : { "ref": "Hour" }, "runsOn" : { "ref": "MyEc2Resource" }, "commandOptions": ["EMPTYASNULL", "IGNOREBLANKLINES"] }
Definisi contoh alur berikut menunjukkan aktivitas yang menggunakan mode sisipan APPEND
:
{ "objects": [ { "id": "CSVId1", "name": "DefaultCSV1", "type": "CSV" }, { "id": "RedshiftDatabaseId1", "databaseName": "dbname", "username": "user", "name": "DefaultRedshiftDatabase1", "*password": "password", "type": "RedshiftDatabase", "clusterId": "redshiftclusterId" }, { "id": "Default", "scheduleType": "timeseries", "failureAndRerunMode": "CASCADE", "name": "Default", "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" }, { "id": "RedshiftDataNodeId1", "schedule": { "ref": "ScheduleId1" }, "tableName": "orders", "name": "DefaultRedshiftDataNode1", "createTableSql": "create table StructuredLogs (requestBeginTime CHAR(30) PRIMARY KEY DISTKEY SORTKEY, requestEndTime CHAR(30), hostname CHAR(100), requestDate varchar(20));", "type": "RedshiftDataNode", "database": { "ref": "RedshiftDatabaseId1" } }, { "id": "Ec2ResourceId1", "schedule": { "ref": "ScheduleId1" }, "securityGroups": "MySecurityGroup", "name": "DefaultEc2Resource1", "role": "DataPipelineDefaultRole", "logUri": "s3://myLogs", "resourceRole": "DataPipelineDefaultResourceRole", "type": "Ec2Resource" }, { "id": "ScheduleId1", "startDateTime": "yyyy-mm-ddT00:00:00", "name": "DefaultSchedule1", "type": "Schedule", "period": "period", "endDateTime": "yyyy-mm-ddT00:00:00" }, { "id": "S3DataNodeId1", "schedule": { "ref": "ScheduleId1" }, "filePath": "s3://datapipeline-us-east-1/samples/hive-ads-samples.csv", "name": "DefaultS3DataNode1", "dataFormat": { "ref": "CSVId1" }, "type": "S3DataNode" }, { "id": "RedshiftCopyActivityId1", "input": { "ref": "S3DataNodeId1" }, "schedule": { "ref": "ScheduleId1" }, "insertMode": "APPEND", "name": "DefaultRedshiftCopyActivity1", "runsOn": { "ref": "Ec2ResourceId1" }, "type": "RedshiftCopyActivity", "output": { "ref": "RedshiftDataNodeId1" } } ] }
Operasi APPEND
menambahkan item ke tabel terlepas dari primer atau semacam kunci. Misalnya, jika Anda memiliki tabel berikut, Anda dapat menambahkan catatan dengan ID dan nilai pengguna yang sama.
ID(PK) USER 1 aaa 2 bbb
Anda dapat menambahkan catatan dengan ID dan nilai pengguna yang sama:
ID(PK) USER 1 aaa 2 bbb 1 aaa
catatan
Jika operasi APPEND
terganggu dan dicoba lagi, alur jalankan kembali yang dihasilkan berpotensi ditambahkan dari awal. Hal ini dapat menyebabkan duplikasi lebih lanjut, sehingga Anda harus menyadari perilaku ini, terutama jika Anda memiliki logika yang menghitung jumlah baris.
Untuk tutorial, lihat Salin Data ke Amazon Redshift Menggunakan AWS Data Pipeline.
Sintaks
Bidang yang Wajib Diisi | Deskripsi | Jenis Slot |
---|---|---|
insertMode |
Menentukan AWS Data Pipeline apa yang dilakukan dengan data yang sudah ada sebelumnya dalam tabel target yang tumpang tindih dengan baris dalam data yang akan dimuat. Nilai yang valid adalah:
|
Pencacahan |
Bidang Invokasi Objek | Deskripsi | Jenis Slot |
---|---|---|
jadwal |
Objek ini dipanggil dalam pelaksanaan interval jadwal. Tentukan referensi jadwal ke objek lain untuk mengatur urutan eksekusi dependensi untuk objek ini. Dalam kebanyakan kasus, kami rekomendasikan untuk menempatkan referensi jadwal pada objek alur default sehingga semua objek mewarisi jadwal itu. Misalnya, Anda dapat dengan secara eksplisit mengatur jadwal pada objek dengan menentukan Jika jadwal utama dalam alur Anda berisi jadwal nested, buat objek induk yang memiliki jadwal referensi. Untuk informasi selengkapnya tentang contoh konfigurasi jadwal opsional, lihat Jadwal. |
Objek Referensi, seperti: "schedule":{"ref":"myScheduleId"} |
Grup yang diperlukan (Salah satu dari berikut ini diperlukan) | Deskripsi | Jenis Slot |
---|---|---|
runsOn | Sumber daya komputasi untuk menjalankan aktivitas atau perintah. Misalnya, EC2 instans Amazon atau EMR kluster Amazon. | Objek Referensi, misalnya "runsOn“: {" ref”:” myResourceId “} |
workerGroup | Kelompok pekerja. Ini digunakan untuk tugas perutean. Jika Anda memberikan runsOn nilai dan workerGroup workerGroup ada, diabaikan. |
String |
Bidang Opsional | Deskripsi | Jenis Slot |
---|---|---|
attemptStatus | Baru-baru ini melaporkan status dari aktivitas jarak jauh. | String |
attemptTimeout | Timeout untuk penyelesaian pekerjaan jarak jauh. Jika disetel, maka aktivitas jarak jauh yang tidak lengkap dalam waktu mulai yang ditetapkan mungkin dicoba lagi. | Periode |
commandOptions |
Membawa parameter untuk diteruskan ke simpul data Amazon Redshift selama operasi Saat memuat tabel, Jika format data dikaitkan dengan input atau output simpul data, maka parameter yang disediakan akan diabaikan. Karena operasi penyalinan pertama kali menggunakan Juga, dalam beberapa kasus ketika perlu membongkar data dari klaster Amazon Redshift dan membuat file di Amazon S3, Untuk meningkatkan performa selama penyalinan dan pembongkaran, tentukan parameter |
String |
dependsOn | Tentukan dependensi pada objek yang bisa dijalankan lainnya. | Objek Referensi: "dependsOn":{"ref":"myActivityId"} |
failureAndRerunModus | Menjelaskan perilaku simpul konsumen ketika dependensi gagal atau menjalankan kembali | Pencacahan |
input | Simpul data input. Sumber data bisa jadi Amazon S3, DynamoDB, atau Amazon Redshift. | Objek Referensi: "input":{"ref":"myDataNodeId"} |
lateAfterTimeout | Waktu berlalu setelah alur mulai di mana objek harus menyelesaikan. Hal ini dipicu hanya ketika jenis jadwal tidak disetel ke ondemand . |
Periode |
maxActiveInstances | Jumlah maksimum instans aktif bersamaan dari suatu komponen. Re-runs tidak dihitung terhadap jumlah instans aktif. | Bilangan Bulat |
maximumRetries | Jumlah maksimum percobaan ulang pada pelanggaran | Bilangan Bulat |
onFail | Tindakan untuk dijalankan ketika objek saat ini gagal. | Objek Referensi: "onFail":{"ref":"myActionId"} |
onLateAction | Tindakan yang harus dipicu jika objek belum dijadwalkan atau masih belum selesai. | Objek Referensi: "onLateAction":{"ref":"myActionId"} |
onSuccess | Tindakan untuk dijalankan ketika objek saat ini berhasil. | Objek Referensi: "onSuccess":{"ref":"myActionId"} |
output | Simpul data output. Lokasi output bisa jadi Amazon S3 atau Amazon Redshift. | Objek Referensi: "output":{"ref":"myDataNodeId"} |
induk | Induk dari objek saat ini dari mana slot akan diwariskan. | Objek Referensi: "parent":{"ref":"myBaseObjectId"} |
pipelineLogUri | S3 URI (seperti 's3://BucketName/Key/ ') untuk mengunggah log untuk pipeline. | String |
prasyarat | Mendefinisikan prasyarat secara opsional. Node data tidak ditandai "READY" sampai semua prasyarat terpenuhi. | Objek Referensi: "precondition":{"ref":"myPreconditionId"} |
antrean |
Sesuai dengan pengaturan Amazon Redshift membatasi jumlah koneksi simultan hingga 15. Untuk informasi selengkapnya, lihat Menetapkan Kueri ke Antrian di Panduan Pengembang Basis Data AmazonRDS. |
String |
reportProgressTimeout |
Timeout untuk panggilan berurutan kerja jarak jauh ke Jika disetel, maka kegiatan jarak jauh yang tidak melaporkan kemajuan untuk jangka waktu tertentu dapat dianggap terhenti dan jadi dicoba lagi. |
Periode |
retryDelay | Durasi timeout antara dua upaya coba lagi. | Periode |
scheduleType |
Mengizinkan Anda untuk menentukan apakah jadwal untuk objek dalam alur Anda. Nilai adalah: Penjadwalan Penjadwalan Jadwal Untuk menggunakan alur Jika Anda menggunakan jadwal |
Pencacahan |
transformSql |
Ekspresi Jalankan ekspresi Saat Anda menyalin data dari DynamoDB atau Amazon S3, AWS Data Pipeline membuat tabel yang disebut "staging" dan awalnya memuat data di sana. Data dari tabel ini digunakan untuk memperbarui tabel target. Output skema Jika Anda menentukan |
String |
Bidang Runtime | Deskripsi | Jenis Slot |
---|---|---|
@activeInstances | Daftar objek instans aktif terjadwal saat ini. | Objek Referensi: "activeInstances":{"ref":"myRunnableObjectId"} |
@actualEndTime | Waktu ketika eksekusi objek ini selesai. | DateTime |
@actualStartTime | Waktu ketika eksekusi objek ini dimulai. | DateTime |
cancellationReason | cancellationReason Jika objek ini dibatalkan. | String |
@cascadeFailedOn | Deskripsi rantai dependensi tempat objek gagal. | Objek Referensi: "cascadeFailedOn":{"ref":"myRunnableObjectId"} |
emrStepLog | EMRlog langkah hanya tersedia pada upaya EMR aktivitas | String |
errorId | errorId Jika objek ini gagal. | String |
errorMessage | errorMessage Jika objek ini gagal. | String |
errorStackTrace | Jejak tumpukan kesalahan jika objek ini gagal. | String |
@finishedTime | Waktu saat objek ini menyelesaikan eksekusinya. | DateTime |
hadoopJobLog | Log pekerjaan Hadoop tersedia pada upaya untuk aktivitas EMR berbasis. | String |
@healthStatus | Status kondisi objek yang mencerminkan keberhasilan atau kegagalan instans objek terakhir yang mencapai keadaan dihentikan. | String |
@healthStatusFromInstanceId | Id dari objek instans terakhir yang mencapai keadaan dihentikan. | String |
@ healthStatusUpdated Waktu | Waktu di mana status kondisi diperbarui terakhir kali. | DateTime |
hostname | Nama host klien yang mengambil upaya tugas. | String |
@lastDeactivatedTime | Waktu di mana objek ini terakhir dinonaktifkan. | DateTime |
@ latestCompletedRun Waktu | Waktu proses terakhir yang eksekusinya selesai. | DateTime |
@latestRunTime | Waktu proses terakhir untuk eksekusi yang dijadwalkan. | DateTime |
@nextRunTime | Waktu run yang akan dijadwalkan berikutnya. | DateTime |
reportProgressTime | Waktu terbaru bahwa aktivitas jarak jauh melaporkan kemajuan. | DateTime |
@scheduledEndTime | Jadwalkan akhir waktu untuk objek. | DateTime |
@scheduledStartTime | Jadwalkan waktu mulai untuk objek. | DateTime |
@status | Status objek ini. | String |
@version | Versi alur objek dibuat dengan. | String |
@waitingOn | Deskripsi daftar dependensi objek ini sedang menunggu. | Objek Referensi: "waitingOn":{"ref":"myRunnableObjectId"} |
Bidang Sistem | Deskripsi | Jenis Slot |
---|---|---|
@error | Galat menggambarkan objek yang tidak terbentuk. | String |
@pipelineId | Id dari alur tempat objek ini berada. | String |
@sphere | Lingkup sebuah objek. Menunjukkan tempatnya dalam siklus hidup. Misalnya, Component Objects memunculkan Instance Objects yang mengeksekusi Attempt Objects.. | String |