数据块中的 Delta 湖 - 为现有存储创建表

问题描述

我目前在 databricks 中有一个附加表(spark 3,databricks 7.5)

parsedDf \
        .select("somefield","anotherField",'partition','offset') \
        .write \
        .format("delta") \
        .mode("append") \
        .option("mergeSchema","true") \
        .save(f"/mnt/defaultDatalake/{append_table_name}")

它之前是用 create table command 创建的,我不使用 INSERT 命令写入它(如上所示)

现在我希望能够使用 sql 逻辑来查询它,而无需每次都通过 createOrReplaceTempView。是否可以在不删除表的情况下将表添加到当前数据?我需要做哪些更改来支持这一点?

更新:

我试过了:

res= spark.sql(f"CREATE TABLE exploration.oplog USING DELTA LOCATION '/mnt/defaultDataLake/{append_table_name}'")

但是得到一个 AnalysisException

您正在尝试创建外部表 explorationdataitems_oplog/mnt/defaultDataLake/specificpathhere 使用 Databricks Delta,但在 输入路径为空。

虽然路径不为空。

解决方法

从 Databricks Runtime 7.0 开始,您可以根据现有数据在 Hive Metastore 中创建表,自动发现架构、分区等(请参阅 documentation for all details)。基本语法如下(用实际值替换 <> 中的值):

CREATE TABLE <database>.<table>
  USING DELTA
  LOCATION '/mnt/defaultDatalake/<append_table_name>'

附言在托管表和非托管表的不同方面有 more documentation 可供阅读。

P.P.S.在 DBR 7.5ML 上对我来说效果很好:

enter image description here