Apache Spark kullanarak Apache Cassandra için Azure Yönetilen Örneği'ne geçiş
Mümkün olduğunda, karma küme yapılandırarak mevcut kümenizdeki verileri Apache Cassandra için Azure Yönetilen Örneği'ne geçirmek için Apache Cassandra yerel çoğaltmasını kullanmanızı öneririz. Bu yaklaşım, kaynak veri merkezinizdeki verileri yeni yönetilen örnek veri merkezinize çoğaltmak için Apache Cassandra'nın dedikodu protokollerini kullanır. Ancak, kaynak veritabanı sürümünüzün uyumlu olmadığı veya karma küme kurulumunun mümkün olmadığı bazı senaryolar olabilir.
Bu öğreticide, Cassandra Spark Bağlayıcısı'nı ve Apache Spark için Azure Databricks'i kullanarak verileri çevrimdışı bir şekilde Apache Cassandra için Azure Yönetilen Örneğine geçirme açıklanmaktadır.
Önkoşullar
Azure portalını veya Azure CLI'yı kullanarak Apache Cassandra kümesi için Azure Yönetilen Örneği sağlayın ve CQLSH ile kümenize bağlanabildiğinizden emin olun.
Yönetilen Cassandra sanal ağınızda bir Azure Databricks hesabı sağlayın. Kaynak Cassandra kümenize de ağ erişimi olduğundan emin olun.
Anahtar alanını/tablo düzenini kaynak Cassandra veritabanınızdan hedef Cassandra Yönetilen Örnek veritabanınıza zaten geçirdiğinizden emin olun.
Azure Databricks kümesi sağlama
Spark 3.0'ı destekleyen Databricks çalışma zamanı sürüm 7.5'i seçmenizi öneririz.
Bağımlılık ekleme
Hem yerel hem de Azure Cosmos DB Cassandra uç noktalarına bağlanmak için kümenize Apache Spark Cassandra Bağlayıcı kitaplığını ekleyin. Kümenizde Kitaplıklar>Yeni>Maven Yükle'yi seçin ve ardından Maven koordinatlarını ekleyin.com.datastax.spark:spark-cassandra-connector-assembly_2.12:3.0.0
Yükle'yi seçin ve yükleme tamamlandığında kümeyi yeniden başlatın.
Not
Cassandra Bağlayıcı kitaplığı yüklendikten sonra Databricks kümesini yeniden başlattığınızdan emin olun.
Geçiş için Scala Not Defteri oluşturma
Databricks'te Scala Not Defteri oluşturun. Kaynak ve hedef Cassandra yapılandırmalarınızı ilgili kimlik bilgileriyle, kaynak ve hedef anahtar alanlarıyla tablolarla değiştirin. Ardından aşağıdaki kodu çalıştırın:
import com.datastax.spark.connector._
import com.datastax.spark.connector.cql._
import org.apache.spark.SparkContext
// source cassandra configs
val sourceCassandra = Map(
"spark.cassandra.connection.host" -> "<Source Cassandra Host>",
"spark.cassandra.connection.port" -> "9042",
"spark.cassandra.auth.username" -> "<USERNAME>",
"spark.cassandra.auth.password" -> "<PASSWORD>",
"spark.cassandra.connection.ssl.enabled" -> "false",
"keyspace" -> "<KEYSPACE>",
"table" -> "<TABLE>"
)
//target cassandra configs
val targetCassandra = Map(
"spark.cassandra.connection.host" -> "<Source Cassandra Host>",
"spark.cassandra.connection.port" -> "9042",
"spark.cassandra.auth.username" -> "<USERNAME>",
"spark.cassandra.auth.password" -> "<PASSWORD>",
"spark.cassandra.connection.ssl.enabled" -> "true",
"keyspace" -> "<KEYSPACE>",
"table" -> "<TABLE>",
//throughput related settings below - tweak these depending on data volumes.
"spark.cassandra.output.batch.size.rows"-> "1",
"spark.cassandra.output.concurrent.writes" -> "1000",
"spark.cassandra.connection.remoteConnectionsPerExecutor" -> "10",
"spark.cassandra.concurrent.reads" -> "512",
"spark.cassandra.output.batch.grouping.buffer.size" -> "1000",
"spark.cassandra.connection.keep_alive_ms" -> "600000000"
)
//Read from source Cassandra
val DFfromSourceCassandra = sqlContext
.read
.format("org.apache.spark.sql.cassandra")
.options(sourceCassandra)
.load
//Write to target Cassandra
DFfromSourceCassandra
.write
.format("org.apache.spark.sql.cassandra")
.options(targetCassandra)
.mode(SaveMode.Append) // only required for Spark 3.x
.save
Not
Her satırın özgün writetime
değerini korumanız gerekiyorsa cassandra migrator örneğine bakın.
Sonraki adımlar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin