Memindahkan data dari database Cassandra lokal 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 Cassandra di V2.
Artikel ini menjelaskan cara menggunakan Aktivitas Penyalinan di Azure Data Factory untuk memindahkan data dari database Cassandra lokal. Aktivitas ini dibangun pada artikel Aktivitas Pergerakan Data, yang menyajikan ringkasan pergerakan data dengan aktivitas penyalinan.
Anda dapat menyalin data dari penyimpanan data Cassandra lokal ke penyimpanan data sink yang didukung. Untuk daftar penyimpanan data yang didukung sebagai sink oleh aktivitas penyalinan, lihat tabel Penyimpanan data yang didukung. Pabrik data saat ini hanya mendukung pemindahan data dari penyimpanan data Cassandra ke penyimpanan data lain, tetapi tidak untuk memindahkan data dari penyimpanan data lain ke penyimpanan data Cassandra.
Versi yang didukung
Konektor Cassandra mendukung versi Cassandra berikut: 2.x dan 3.x. Untuk aktivitas yang berjalan pada Microsoft Integration Runtime yang Di-host Sendiri, Cassandra 3.x didukung sejak IR versi 3.7 ke atas.
Prasyarat
Agar layanan Azure Data Factory dapat menyambungkan ke database Cassandra lokal Anda, Anda harus memasang Gateway Manajemen Data pada mesin yang sama yang menghosting database atau di mesin terpisah untuk menghindari bersaing untuk sumber daya dengan database. Gateway Manajemen Data adalah komponen yang menyambungkan sumber data lokal ke layanan awan dengan cara yang aman dan terkelola. Lihat artikel Gateway Manajemen Data untuk detail tentang Gateway Manajemen Data. Lihat artikel Memindahkan data dari lokal ke cloud untuk instruksi langkah demi langkah tentang menyiapkan gateway alur data untuk memindahkan data.
Anda harus menggunakan gateway untuk menyambungkan ke database Cassandra meskipun database di-hosting di cloud, misalnya, pada Azure IaaS VM. Y Anda dapat memiliki gateway pada VM yang sama yang menghosting database atau pada VM terpisah selama gateway bisa tersambung ke database.
Ketika Anda menginstal gateway, itu secara otomatis menginstal driver Microsoft Cassandra ODBC yang digunakan untuk terhubung ke database Cassandra. Oleh karena itu, Anda tidak perlu memasang driver apa pun secara manual di mesin gateway saat menyalin data dari database Cassandra.
Catatan
Lihat Memecahkan masalah gateway untuk tips tentang pemecahan masalah terkait koneksi/gateway.
Memulai
Anda dapat membuat alur dengan aktivitas salin yang memindahkan data dari penyimpanan data Cassandra lokal dengan menggunakan alat/API yang berbeda.
- Cara termudah untuk membuat alur adalah dengan menggunakan Wizard Salin. Lihat Tutorial: Membuat alur menggunakan Wizard Salin untuk panduan singkat tentang membuat alur menggunakan Wizard Salin data.
- Anda juga dapat menggunakan alat berikut untuk membuat alur: Visual Studio, Azure PowerShell, template Azure Resource Manager, .NET API, dan REST API. Lihat Tutorial aktivitas penyalinan untuk instruksi langkah demi langkah guna membuat alur dengan aktivitas penyalinan.
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 penyalinan.
- Buat alur dengan aktivitas salin yang mengambil himpunan data sebagai input dan himpunan data sebagai output.
Saat Anda menggunakan wizard, definisi JSON untuk entitas Data Factory ini (layanan tertaut, himpunan data, dan alur) secara otomatis dibuat untuk Anda. Saat Anda menggunakan alat/API (kecuali .NET API), Anda menentukan entitas Data Factory ini dengan menggunakan format JSON. Untuk sampel dengan definisi JSON untuk entitas Data Factory yang digunakan untuk menyalin data dari penyimpanan data Cassandra lokal, lihat bagian contoh JSON: Menyalin data dari Cassandra ke Azure Blob dari artikel ini.
Bagian berikut memberikan detail tentang properti JSON yang digunakan untuk menentukan entitas Azure Data Factory khusus untuk penyimpanan data Cassandra:
Properti layanan tertaut
Tabel berikut ini menyediakan deskripsi untuk elemen JSON khusus untuk layanan tertaut Cassandra.
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| jenis | Properti jenis harus diatur ke: OnPremisesCassandra | Ya |
| host | Satu atau beberapa alamat IP atau nama host server Cassandra. Tentukan daftar alamat IP atau nama host yang dipisahkan koma untuk disambungkan ke semua server secara bersamaan. |
Ya |
| port | Port TCP yang digunakan server Cassandra untuk mendengarkan koneksi klien. | Tidak, nilai default: 9042 |
| authenticationType | Dasar, atau Anonim | Ya |
| username | Tentukan nama pengguna untuk akun pengguna. | Ya, jika authenticationType diatur ke Dasar. |
| kata sandi | Tentukan kata sandi untuk akun pengguna. | Ya, jika authenticationType diatur ke Basic. |
| gatewayName | Nama gateway yang digunakan untuk menyambungkan ke database Cassandra di tempat. | Ya |
| encryptedCredential | Mandat dienkripsi oleh gateway. | Tidak |
Catatan
Saat ini koneksi ke Cassandra menggunakan TLS tidak didukung.
Properti himpunan data
Untuk daftar lengkap bagian properti & yang tersedia untuk menentukan himpunan data, lihat artikel Membuat himpunan data. Bagian-bagian seperti struktur, ketersediaan, dan kebijakan himpunan data JSON mirip untuk semua jenis himpunan data (Azure SQL, blob Azure, tabel Azure, dll.).
Bagian typeProperties berbeda untuk setiap jenis himpunan data dan menyediakan informasi tentang lokasi data di penyimpanan data. Bagian typeProperties untuk himpunan data jenis CassandraTable memiliki properti berikut ini
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| keyspace | Nama ruang kunci atau skema dalam database Cassandra. | Ya (Jika kueri untuk CassandraSource tidak didefinisikan). |
| tableName | Nama tabel dalam database Cassandra. | Ya (Jika kueri untuk CassandraSource tidak didefinisikan). |
Properti aktivitas penyalinan
Untuk daftar lengkap bagian & yang tersedia untuk menentukan himpunan data, lihat artikel Membuat Alur. Properti seperti nama, deskripsi, tabel input dan output, dan kebijakan tersedia untuk semua jenis aktivitas.
Sedangkan properti yang tersedia di bagian typeProperties aktivitas bervariasi menurut setiap jenis aktivitas. Untuk aktivitas Penyalinan, mereka bervariasi bergantung pada jenis sumber dan sink.
Ketika sumber berjenis CassandraSource, properti berikut ini tersedia di bagian typeProperties:
| Properti | Deskripsi | Nilai yang diizinkan | Diperlukan |
|---|---|---|---|
| kueri | Gunakan kueri kustom untuk membaca data. | Kueri SQL-92 atau kueri CQL. Lihat referensi CQL. Saat menggunakan kueri SQL, tentukan nama keyspace name.table untuk mewakili tabel yang kuerinya ingin Anda buat. |
Tidak (jika tableName dan keyspace pada himpunan data ditentukan). |
| consistencyLevel | Tingkat konsistensi menentukan berapa banyak replika yang harus merespons permintaan baca sebelum mengembalikan data ke aplikasi klien. Cassandra memeriksa jumlah replika data yang ditentukan untuk memenuhi permintaan baca. | ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, LOCAL_ONE. Lihat Mengonfigurasi konsistensi data untuk mengetahui detailnya. | Nomor. Nilai defaultnya adalah ONE. |
Contoh JSON: Menyalin data dari tabel Web ke Azure Blob
Contoh berikut ini menyediakan sampel definisi JSON yang bisa Anda gunakan untuk membuat alur dengan menggunakan Visual Studio atau Azure PowerShell. Contoh ini menunjukkan cara menyalin data dari database Cassandra lokal ke Azure Blob Storage. Namun, data dapat disalin ke salah satu sink yang disebutkan di sini menggunakan Aktivitas Penyalinan di Azure Data Factory.
Penting
Sampel ini menyediakan cuplikan JSON. Hal ini tidak termasuk instruksi langkah demi langkah untuk membuat pabrik data. Lihat artikelmemindahkan data antara lokasi lokal dan artikel cloud untuk instruksi langkah demi langkah.
Sampel memiliki entitas Data Factory berikut:
- Layanan tertaut dari jenis OnPremisesCassandra.
- Layanan tertaut dari jenis AzureStorage.
- Himpunan data input tipe CassandraTable.
- Output himpunan data dari jenis AzureBlob.
- Alur dengan Aktivitas Penyalinan yang menggunakan CassandraSource danBlobSink.
Layanan yang ditautkan Cassandra:
Contoh ini menggunakan layanan terkait Cassandra. Lihat bagian layanan tertaut Cassandra untuk daftar properti yang didukung oleh layanan tertaut ini.
{
"name": "CassandraLinkedService",
"properties":
{
"type": "OnPremisesCassandra",
"typeProperties":
{
"authenticationType": "Basic",
"host": "mycassandraserver",
"port": 9042,
"username": "user",
"password": "password",
"gatewayName": "mygateway"
}
}
}
Layanan tertaut Azure Storage:
{
"name": "AzureStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
}
}
}
Himpunan data input Cassandra:
{
"name": "CassandraInput",
"properties": {
"linkedServiceName": "CassandraLinkedService",
"type": "CassandraTable",
"typeProperties": {
"tableName": "mytable",
"keySpace": "mykeyspace"
},
"availability": {
"frequency": "Hour",
"interval": 1
},
"external": true,
"policy": {
"externalData": {
"retryInterval": "00:01:00",
"retryTimeout": "00:10:00",
"maximumRetry": 3
}
}
}
}
Pengaturan eksternal ke true menginformasikan layanan Azure Data Factory bahwa himpunan data berada di luar pabrik data dan tidak diproduksi oleh aktivitas di pabrik data.
Himpunan data output Azure Blob:
Data ditulis ke blob baru setiap jam (frekuensi: jam, interval: 1).
{
"name": "AzureBlobOutput",
"properties":
{
"type": "AzureBlob",
"linkedServiceName": "AzureStorageLinkedService",
"typeProperties":
{
"folderPath": "adfgetstarted/fromcassandra"
},
"availability":
{
"frequency": "Hour",
"interval": 1
}
}
}
Aktivitas penyalinan dalam alur dengan Cassandra source dan Blob sink:
Alur berisi Aktivitas Penyalinan yang dikonfigurasi untuk menggunakan himpunan data input dan output dan dijadwalkan untuk berjalan setiap jam. Dalam definisi jalur JSON, jenis sumber diatur ke CassandraSource dan jenis sink diatur ke BlobSink.
Lihat Jenis properti RelationalSource untuk daftar properti yang didukung oleh RelationalSource.
{
"name":"SamplePipeline",
"properties":{
"start":"2016-06-01T18:00:00",
"end":"2016-06-01T19:00:00",
"description":"pipeline with copy activity",
"activities":[
{
"name": "CassandraToAzureBlob",
"description": "Copy from Cassandra to an Azure blob",
"type": "Copy",
"inputs": [
{
"name": "CassandraInput"
}
],
"outputs": [
{
"name": "AzureBlobOutput"
}
],
"typeProperties": {
"source": {
"type": "CassandraSource",
"query": "select id, firstname, lastname from mykeyspace.mytable"
},
"sink": {
"type": "BlobSink"
}
},
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"concurrency": 1,
"executionPriorityOrder": "OldestFirst",
"retry": 0,
"timeout": "01:00:00"
}
}
]
}
}
Pemetaan jenis untuk Cassandra
| Jenis Cassandra | Jenis berbasis .NET |
|---|---|
| ASCII | String |
| BIGINT | Int64 |
| BLOB | Byte[] |
| BOOLEAN | Boolean |
| DESIMAL | Desimal |
| DOUBLE | Double |
| FLOAT | Tunggal |
| INET | String |
| INT | Int32 |
| TEXT | String |
| TIMESTAMP | DateTime |
| TIMEUUID | Guid |
| UUID | Guid |
| VARCHAR | String |
| VARINT | Desimal |
Catatan
Untuk jenis koleksi (peta, set, daftar, dll.), lihat bagian Bekerja dengan jenis koleksi Cassandra menggunakan tabel virtual.
Jenis yang ditentukan pengguna tidak didukung.
Panjang Kolom Biner dan Kolom String tidak boleh lebih besar dari 4000.
Bekerja dengan koleksi menggunakan tabel virtual
Azure Data Factory menggunakan driver ODBC bawaan untuk terhubung dan menyalin data dari database Cassandra. Untuk jenis koleksi termasuk peta, set, dan daftar, driver menormalkan ulang data ke dalam tabel virtual terkait. Khususnya, jika tabel berisi kolom koleksi apa pun, driver menghasilkan tabel virtual berikut:
- Tabel dasar, yang berisi data yang sama dengan tabel nyata kecuali untuk kolom koleksi. Tabel dasar menggunakan nama yang sama dengan tabel asli yang diwakilinya.
- Tabel virtual untuk setiap kolom koleksi, yang memperluas data bertumpuk. Tabel virtual yang mewakili koleksi diberi nama menggunakan nama tabel nyata, pemisah "vt" dan nama kolom.
Tabel virtual merujuk ke data dalam tabel nyata, yang memungkinkan driver mengakses data yang didenormalisasi. Lihat bagian Contoh untuk mengetahui detailnya. Anda dapat mengakses konten koleksi Cassandra dengan mengkueri dan bergabung dengan tabel virtual.
Anda bisa menggunakan Wizard Penyalinan untuk menampilkan daftar tabel dalam database Cassandra secara intuitif termasuk tabel virtual, dan mempratinjau data di dalamnya. Anda juga bisa membuat kueri di Wizard Penyalinan dan memvalidasi untuk melihat hasilnya.
Contoh
Misalnya, "ExampleTable" berikut adalah tabel database Cassandra yang berisi kolom kunci utama bilangan bulat bernama "pk_int", kolom teks bernama nilai, kolom daftar, kolom peta, dan kolom set (bernama "StringSet").
| pk_int | Nilai | Daftar | Peta | StringSet |
|---|---|---|---|---|
| 1 | "nilai sampel 1" | ["1", "2", "3"] | {"S1": "a", "S2": "b"} | {"A", "B", "C"} |
| 3 | "sampel nilai 3" | ["100", "101", "102", "105"] | {"S1": "t"} | {"A", "E"} |
Driver akan menghasilkan beberapa tabel virtual untuk mewakili tabel tunggal ini. Kolom kunci asing dalam tabel virtual mereferensikan kolom kunci utama dalam tabel riil, dan menunjukkan baris tabel riil yang terkait dengan baris tabel virtual.
Tabel virtual pertama adalah tabel dasar bernama "ExampleTable" diperlihatkan dalam tabel berikut. Tabel dasar berisi data yang sama dengan tabel database asli kecuali untuk kumpulan, yang dihilangkan dari tabel ini dan diperluas dalam tabel virtual lainnya.
| pk_int | Nilai |
|---|---|
| 1 | "nilai sampel 1" |
| 3 | "sampel nilai 3" |
Tabel berikut ini memperlihatkan tabel virtual yang menormalkan ulang data dari kolom Daftar, Peta, dan StringSet. Kolom dengan nama yang diakhiri dengan "_index" atau "_key" menunjukkan posisi data dalam daftar atau peta asli. Kolom dengan nama yang diakhiri dengan "_value" berisi data yang diperluas dari koleksi.
Tabel "ExampleTable_vt_List":
| pk_int | List_index | List_value |
|---|---|---|
| 1 | 0 | 1 |
| 1 | 1 | 2 |
| 1 | 2 | 3 |
| 3 | 0 | 100 |
| 3 | 1 | 101 |
| 3 | 2 | 102 |
| 3 | 3 | 103 |
Tabel "ExampleTable_vt_Map":
| pk_int | Map_key | Map_value |
|---|---|---|
| 1 | S1 | A |
| 1 | S2 | b |
| 3 | S1 | t |
Tabel "ExampleTable_vt_StringSet":
| pk_int | StringSet_value |
|---|---|
| 1 | A |
| 1 | B |
| 1 | C |
| 3 | A |
| 3 | E |
Memetakan sumber untuk kolom sink
Untuk mempelajari tentang pemetaan kolom dari himpunan data sumber ke kolom dalam himpunan data sink, lihat Memetakan kolom himpunan data di Azure Data Factory.
Bacaan yang dapat diulang 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 kebijakan coba lagi untuk himpunan data sehingga irisan diulang saat kegagalan terjadi. Saat irisan diulang dengan cara apa pun, Anda perlu memastikan bahwa data yang sama dibaca tidak peduli berapa kali irisan dijalankan. Lihat Bacaan yang dapat diulang dari sumber relasional.
Kinerja dan Penyetelan
Lihat Performa Aktivitas Penyalinan & Panduan Pengaturan untuk mempelajari tentang faktor utama yang memengaruhi performa perpindahan data (Aktivitas Penyalinan) di Azure Data Factory dan berbagai cara untuk mengoptimalkannya.