如何从R向Databricks Catalog写入Delta表?
解决sparklyr写入Databricks Catalog Delta表的问题
以下几种方法可以实现从远程RStudio通过sparklyr写入Databricks Catalog中的Delta表:
方法1:使用DBI接口的
dbWriteTable()指定完整三级命名
sparklyr兼容DBI操作,直接用catalog.schema.table的完整格式作为表名即可,无需额外参数:library(sparklyr) library(DBI) # 假设已建立spark连接sc dbWriteTable( sc, name = "my_catalog.my_schema.my_table", value = your_data_frame, overwrite = TRUE, format = "delta" )方法2:切换当前Catalog和Schema后用
sdf_copy_to()
先通过Spark会话设置默认的Catalog和Schema,之后sdf_copy_to()会自动写入对应位置:library(sparklyr) sc <- spark_connect(...) # 你的连接代码 # 设置默认Catalog和Schema spark_session(sc) %>% invoke("sql", "USE CATALOG my_catalog") %>% invoke("sql", "USE SCHEMA my_schema") # 写入表,此时无需指定in_catalog参数 sdf_copy_to( sc, your_data_frame, name = "my_table", overwrite = TRUE, format = "delta" )方法3:使用
spark_write_delta()(需安装delta包)
若安装了delta包,可直接指定Catalog中表的路径完成写入:library(sparklyr) library(delta) sc <- spark_connect(...) spark_write_delta( your_data_frame, path = "dbfs:/user/hive/warehouse/my_catalog.db/my_schema/my_table", mode = "overwrite" )
注意:确保Databricks-Connect版本与集群版本匹配,且连接用户拥有对应Catalog和Schema的写入权限。
内容的提问来源于stack exchange,提问作者Hejlesen
相关产品推荐
相关产品推荐

