数据块中的三角洲湖 - 为现有存储创建 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 上对我来说工作得很好:
我目前在 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 上对我来说工作得很好: