如何通过 Synapse 的 Spark 池将数据帧数据附加到专用的 SQL 池中?

Posted

技术标签:

【中文标题】如何通过 Synapse 的 Spark 池将数据帧数据附加到专用的 SQL 池中?【英文标题】:How to append the dataframe data into dedicated SQL pool through Spark pool of synapse? 【发布时间】:2021-12-07 06:25:09 【问题描述】:

如何通过突触的Spark pool将数据框数据追加到专用的SQL池中?

【问题讨论】:

【参考方案1】:

synapsesql.read 方法(描述为 here)目前不支持追加到专用 SQL 池表,但您可以通过分区切换或使用 CTAS 来组合原始表和新数据来模拟该行为。

分区模式:

CTAS 模式:

CREATE TABLE dbo.yourNewTable
WITH (
    DISTRIBUTION = ROUND_ROBIN, -- or HASH(someColumn)|REPLCIATE
    CLUSTERED COLUMNSTORE INDEX -- or CLUSTERED INDEX|HEAP
)
AS
SELECT *
FROM dbo.someTable_part1
UNION ALL
SELECT *
FROM dbo.someTable_part2;

可能能够使用 JDBC 连接进行附加,但我可能不会在 Synapse 中这样做。您也可以尝试saveAsTable 方法,记住这附加到 Spark 表而不是专用 SQL 池表,例如:

df.write.saveAsTable('yourTable', mode='append')

【讨论】:

以上是关于如何通过 Synapse 的 Spark 池将数据帧数据附加到专用的 SQL 池中?的主要内容,如果未能解决你的问题,请参考以下文章

如何写入 Synapse 专用 sql 池

如何引发异常以退出 Synapse Apache Spark 笔记本

写入 Synapse DWH 池时出现 Spark 错误

从 Azure Synapse 中的 Apache Spark 将数据写入 SQL DW

如何使用 Azure Synapse Analytics 将自定义 Python 库导入到 Apache Spark 池中?

由于 PySpark 时间戳,将 Spark 数据帧保存到 Azure Synapse 时出现问题