gpt4 book ai didi

apache-spark - 数据 block 中的 Delta 湖 - 为现有存储创建表

转载 作者:行者123 更新时间:2023-12-04 08:17:21 25 4
gpt4 key购买 nike

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

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


虽然路径不为空。

最佳答案

从 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

关于apache-spark - 数据 block 中的 Delta 湖 - 为现有存储创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65652312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com