
ScyllaDB 与 Databricks 集成指南基于 Spark Cassandra Connector 的完整实操【免费下载链接】scylladbNoSQL data store using the Seastar framework, compatible with Apache Cassandra and Amazon DynamoDB项目地址: https://gitcode.com/GitHub_Trending/sc/scylladb本文是一份面向数据工程师与平台开发者的实操指南讲解如何将 ScyllaDB基于 Seastar 框架的 NoSQL 数据存储兼容 Apache Cassandra 与 Amazon DynamoDB与 Databricks Spark 集群打通让 Databricks Notebook 直接以 DataFrame 形式读写 ScyllaDB 中的数据。读完本文你将掌握 Databricks 集群的 Spark 配置要点、Maven 依赖安装方法并能独立完成从 ScyllaDB 建库建表到 Databricks 查询展示的端到端验证。本文所有命令与配置均可在 ScyllaDB 官方文档与仓库源码中一一对应查证。为什么 ScyllaDB 能与 Databricks 集成ScyllaDB 在 CQL 二进制协议层面与 Apache Cassandra 完全兼容这意味着任何使用 CQL 协议的驱动Driver都可以直接连接 ScyllaDB无需做任何协议适配。官方文档明确指出ScyllaDB is Apache Cassandra compatible at the CQL binary protocol level, and any driver which uses CQL will work with ScyllaDB. Any application which uses a CQL driver will work with ScyllaDB, for example, Databricks Spark cluster.这一兼容性正是集成的基石Databricks 上的 Spark 集群通过 Datastax Spark Cassandra Connector 走 CQL 协议访问数据因此 ScyllaDB 天然可以作为 Databricks 的持久化数据源用于批量 ETL、数据科学分析等场景。仓库中另有 ScyllaDB 与 Spark 集成示例 可作延伸阅读其中特别提醒Spark Cassandra Connector 在 1.3.0 之前的版本同时依赖 Thrift 与 CQL无法与 ScyllaDB 正常配合升级到 1.3.0纯 CQL后才能工作——这正是凡是 CQL 驱动皆可连这一原则的佐证。资源清单本文示例使用以下资源你的实际需求可能有所不同但所需资源类型一致ScyllaDB 集群已安装并运行可访问Databricks 账号可创建集群与 Notebook 的工作区集成前置检查在开始集成之前需要确认以下两点ScyllaDB 已安装并正常运行且你知道 ScyllaDB 服务器的 IP 地址。ScyllaDB 的 CQL 端口9042可达。ScyllaDB 默认通过 9042 端口提供 CQL 原生传输服务native transport可使用如下命令验证curl scylla_IP:9042关于端口 9042 的默认值可以在仓库配置文件中直接验证根目录下的 conf/scylla.yaml 中定义了native_transport_port: 9042 native_shard_aware_transport_port: 19042 #native_transport_port_ssl: 9142其实现定义位于 db/config.cc对应native_transport_port默认 9042CQL 客户端入口、native_transport_port_ssl默认 9142加密入口以及native_shard_aware_transport_port默认 19042按分片路由的 CQL 端口。若你的 ScyllaDB 开启了客户端加密则需使用 9142 端口并在 Spark 配置中同步调整。另外如果 ScyllaDB 启用了认证authenticator: PasswordAuthenticator请提前准备好用户名与密码供后续 Spark 配置使用。认证相关配置的说明见 conf/scylla.yaml可选的认证后端在 auth/service.cc 的工厂函数中注册包括AllowAllAuthenticator、PasswordAuthenticator、CertificateAuthenticator、SaslauthdAuthenticator等。集成步骤步骤 1创建 Databricks 集群在 Databricks 工作区中创建一个新的集群推荐使用以下配置Databricks Runtime 版本Runtime: 9.1 LTS (Scala 2.12, Spark 3.1.2)该运行时内置 Scala 2.12 与 Spark 3.1.2与下文 Maven 坐标中的_2.12及连接器版本 3.1.0 相匹配。若使用其他 Runtime 版本请确认 Scala 二进制版本_2.12/_2.13与 Spark 版本之间的兼容关系。Spark 配置Spark config在集群的高级选项Advanced options → Spark中添加如下键值对spark.sql.catalog.your_catalog com.datastax.spark.connector.datasource.CassandraCatalog spark.sql.catalog.your_catalog.spark.cassandra.connection.host your_host spark.cassandra.auth.username your_username spark.cassandra.auth.password your_password各配置项含义如下配置项说明spark.sql.catalog.your_catalog注册一个名为your_catalog的 SQL Catalog其实现类为 Datastax 连接器提供的CassandraCatalog用于在 Spark SQL / DataFrame API 中以catalog.keyspace.table三级命名访问数据spark.sql.catalog.your_catalog.spark.cassandra.connection.hostScyllaDB 节点的主机地址即上文scylla_IPspark.cassandra.auth.usernameScyllaDB 认证用户名仅在启用PasswordAuthenticator等认证后端时需要spark.cassandra.auth.passwordScyllaDB 认证密码其中spark.cassandra.connection.host前缀spark.cassandra.*是 Spark Cassandra Connector 读取连接参数的通用命名空间当配合 SQL Catalog 使用时用带 catalog 前缀的spark.sql.catalog.your_catalog.spark.cassandra.connection.host指定该 Catalog 对应的连接主机。如果集群未启用认证可省略后两行用户名/密码配置。步骤 2通过 Maven 安装连接器库集群创建完成后安装 Spark Cassandra Connector 库进入集群详情页点击Libraries库选择Install new安装新的选择来源Maven点击Search Packages搜索包并在Maven Central中搜索填入以下 Maven 坐标并安装com.datastax.spark:spark-cassandra-connector-assembly_2.12:3.1.0该坐标中的_2.12表示使用 Scala 2.12 编译的产物3.1.0为连接器版本-assembly后缀表示包含全部依赖的聚合包可直接作为 Spark 的库使用。安装完成后集群中的所有 Notebook 即可通过CassandraCatalog访问 ScyllaDB。测试用例端到端验证1. 在 ScyllaDB 侧准备测试数据使用cqlsh或任意 CQL 客户端连接到 ScyllaDB执行以下语句创建 keyspace、表并写入一条测试数据CREATE KEYSPACE databriks WITH replication {class: NetworkTopologyStrategy, replication_factor : 3}; CREATE TABLE databriks.demo1 (pk text PRIMARY KEY, ck1 text, ck2 text); INSERT INTO databriks.demo1 (pk, ck1, ck2) VALUES (pk, ck1, ck2);说明Keyspace 使用NetworkTopologyStrategy与副本因子 3适用于多数据中心或至少 3 节点的集群如果是单节点测试环境可将replication_factor调整为 1并改用SimpleStrategy。表databriks.demo1以pk作为分区键主键ck1、ck2为普通列。原文档示例中的 keyspace 名databriks拼写如此请按此保持一致以便 Notebook 中的引用路径正确。2. 在 Databricks 侧创建并运行 Notebook在 Databricks 工作区新建一个 Notebook语言选择 Python或 Scala输入以下代码并运行df spark.read.cassandraFormat.table(your_catalog.databriks.demo1) display(df)执行逻辑说明spark.read.cassandraFormat.table(...)是 Spark Cassandra Connector 提供的 DataFrame API 读取入口其中.cassandraFormat指定使用 Cassandra 数据源格式your_catalog.databriks.demo1为三级命名路径对应步骤 1 中注册的 Catalog 名 → keyspacedatabriks→ 表demo1display(df)是 Databricks Notebook 专用的可视化命令会在单元格内以表格形式展示读取到的 DataFrame。如果一切配置正确运行后将看到一行数据(pk, ck1, ck2)证明 Databricks Spark 集群已成功通过 CQL 协议从 ScyllaDB 读取数据集成完成。常见问题与排查建议curl scylla_IP:9042无响应确认 ScyllaDB 已启动、native_transport_port未被改动默认为 9042见 conf/scylla.yaml并检查云安全组/防火墙是否放行该端口。认证失败确认spark.cassandra.auth.username/spark.cassandra.auth.password与 ScyllaDB 中配置的认证后端一致。若使用PasswordAuthenticator请确保system_authkeyspace 的副本因子已适当提高见 conf/scylla.yaml 中的注释说明。连接器版本不匹配Maven 坐标中的_2.12必须与 Databricks Runtime 的 Scala 版本一致连接器版本需与 Spark 主版本兼容。参考 ScyllaDB 与 Spark 集成示例 中关于旧版本连接器依赖 Thrift 导致无法连接 ScyllaDB 的说明。Table 找不到检查三级命名路径catalog.keyspace.table中的 Catalog 名是否与spark.sql.catalog.your_catalog中配置的名称完全一致且 keyspace/表名与 ScyllaDB 中实际名称一致注意原示例中的databriks拼写。总结通过本文的四个环节——前置检查、集群创建与 Spark 配置、Maven 库安装、Notebook 端到端验证——你已经完成了 ScyllaDB 与 Databricks 的完整集成。整个方案的根基在于 ScyllaDB 对 CQL 二进制协议的完整兼容任何遵循 CQL 的驱动包括 Datastax Spark Cassandra Connector都可以直接接入无需任何定制改造。基于这一模式你还可以进一步将同样的连接器配置推广到其他 Spark 运行环境或参考仓库中的 Spark 集成文档 扩展出更复杂的读写与批处理场景。【免费下载链接】scylladbNoSQL data store using the Seastar framework, compatible with Apache Cassandra and Amazon DynamoDB项目地址: https://gitcode.com/GitHub_Trending/sc/scylladb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考