为何没有面向Databricks的Spark连接器?需外部Spark读取其数据
在Databricks外部通过Spark读取数据的可行方案
不需要专门的“Databricks Spark连接器”,以下几种官方支持的方式可以实现类似Snowflake Connector的效果:
连接Databricks元存储(Unity Catalog/Metastore)
配置外部Spark的hive.metastore.uris参数,直接对接Databricks的元存储,之后就能像访问Hive表一样读取Databricks中的表数据。示例配置:spark.conf.set("hive.metastore.uris", "thrift://<databricks-metastore-host>:9083")读取表的方式:
spark.sql("SELECT * FROM catalog.schema.target_table")
注意:需要确保外部Spark集群能访问到Databricks元存储的网络地址。使用Delta Lake原生库读取
如果Databricks中的数据是Delta Lake格式,直接在外部Spark中引入Delta Lake依赖,即可读取Delta表。示例代码:import io.delta.tables._ val deltaTable = DeltaTable.forPath(spark, "s3://your-databricks-storage/path/to/delta-table") deltaTable.toDF.show()注意:需要保证外部Spark集群能访问存储Delta表的云存储(S3/ADLS/GCS),并拥有对应读写权限。
通过JDBC连接Databricks SQL端点
用Spark的JDBC连接器对接Databricks SQL端点,像连接普通数据库一样读取数据。示例代码:val df = spark.read .format("jdbc") .option("url", "jdbc:databricks://<workspace-url>:443/default;transportMode=http;ssl=1;httpPath=/sql/1.0/endpoints/<endpoint-id>") .option("dbtable", "catalog.schema.target_table") .option("user", "<databricks-personal-token>") .option("password", "<databricks-personal-token>") .load()这里的token需使用Databricks个人访问令牌,同时要确保外部网络能访问到Databricks SQL端点。
内容的提问来源于stack exchange,提问作者Haojin
相关产品推荐
相关产品推荐

