数据块中的三角洲湖 - 为现有存储创建 table

Delta lake in databricks - creating a table for existing storage

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

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。是否可以将 table 添加到当前数据而不删除它?我需要做哪些更改才能支持它?

更新:

我试过:

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

但是得到一个 AnalysisException

You are trying to create an external table exploration.dataitems_oplog from /mnt/defaultDataLake/specificpathhere using Databricks Delta, but the schema is not specified when the input path is empty.

虽然路径不为空。

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

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

P.S。关于托管与非托管 table 的不同方面,more documentation 可能对阅读很有用。

P.P.S。在 DBR 7.5ML 上对我来说工作得很好: