【问题标题】:Delta lake in databricks - creating a table for existing storagedatabricks 中的 Delta 湖 - 为现有存储创建表
【发布时间】:2021-04-15 12:53:19
【问题描述】:

我目前在 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

您正在尝试创建一个外部表exploration.dataitems_oplog 来自 /mnt/defaultDataLake/specificpathhere 使用 Databricks Delta,但是当 输入路径为空。

虽然路径不为空。

【问题讨论】:

    标签: apache-spark databricks delta-lake


    【解决方案1】:

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

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

    附:在托管表和非托管表的不同方面有 more documentation,可能有助于阅读。

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

    【讨论】:

    • 谢谢,我试过了,失败了,可以在上面的更新部分看到结果
    • 在 DBR 7.5ML 上对我来说很好用...我会检查您的文件夹是否包含 _delta 目录等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2019-06-07
    • 2021-05-24
    • 1970-01-01
    • 2022-08-12
    • 2021-04-15
    • 1970-01-01
    相关资源
    最近更新 更多