如何在 Azure 数据湖存储上创建外部增量表?我目前正在从事一个迁移项目(从Pyspark/Hadoop到Azure)。我找不到有关在 Azure Delta take 中创建非托管表的太多文档。以下是我目前能够在 Pyspark/Hive/HDFS 设置中执行的一系列操作,想知道如何在 Azure 上建立相同的操作。
按顺序操作-
将数据框DF加载到此外部表DF.write.insert("table")
将数据框DF1加载到此外部表DF1.write.insert(table)
即使我在加载第二个数据框之前执行“删除表(如果存在)”,如果我在第4步之后查询“表”,我也可以看到两个数据框中的内容,因为我只是“删除”表结构,而不是实际数据(Hive外部表)。这是它的外观-
>>> df = spark.createDataFrame([('abcd','xyz')], ['s', 'd'])
>>> df1 = spark.createDataFrame([('abcd1','xyz1')], ['s', 'd'])
>>> spark.sql("CREATE EXTERNAL TABLE IF NOT EXISTS mydb.test_table (s string,d string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' LOCATION 'hdfs://system/dev/stage/test_table'")
>>> df.write.insertInto("mydb.test_table",overwrite=True)
>>> spark.sql('DROP TABLE IF EXISTS mydb.test_table')
>>> df1.write.insertInto("mydb.test_table",overwrite=False)
>>> spark.sql("select * from mydb.test_table").show()
+-----+----+
| s| d|
+-----+----+
|abcd1|xyz1|
| abcd| xyz|
+-----+----+
我正在尝试使用Azure Delta湖表执行类似操作,步骤如下-
这是我的数据库笔记本中的代码。
df = spark.createDataFrame([('abcd','xyz')], ['s', 'd'])
table_path = f"abfss://mycontainer@xxxxxxxxxxxx.dfs.core.windows.net/stage/test_table"
df.write.format("delta").mode("overwrite").option("path",table_path)
spark.sql("CREATE TABLE test_table USING DELTA LOCATION 'abfss://mycontainer@xxxxxxxxxxxx.dfs.core.windows.net/stage/test_table'")
但是,它没有将数据帧写入位置table_path并且最后一步无法创建表(可能需要dbfs:此处需要挂载路径?如何使用非托管的 Delta 湖表执行类似的操作?
CREATE EXTERNAL TABLE IF NOT EXISTS my_table (name STRING, age INT)
COMMENT 'This table is created with existing data'
LOCATION 'spark-warehouse/tables/my_existing_table'
使用上述方法在Delta Lake中像Hive一样创建外部表。
有关完整参考,请查看以下网络文档链接 https://learn.microsoft.com/en-us/azure/databricks/spark/2.x/spark-sql/language-manual/create-table
CREATE TABLE [IF NOT EXISTS] [db_name.]table_name
[(col_name1 col_type1 [COMMENT col_comment1], ...)]
USING data_source
[OPTIONS (key1 [ = ] val1, key2 [ = ] val2, ...)]
[PARTITIONED BY (col_name1, col_name2, ...)]
[CLUSTERED BY (col_name3, col_name4, ...) INTO num_buckets BUCKETS]
[LOCATION path]
[COMMENT table_comment]
[TBLPROPERTIES (key1 [ = ] val1, key2 [ = ] val2, ...)]
[AS select_statement]
[位置路径]有助于提供外部路径。此子句将负责外部表的创建