使用 Notebook 将数据从 Azure Synapse 数据库加载到 DataFrame

Loading Data from Azure Synapse Database into a DataFrame with Notebook

我正在尝试将数据从 Azure Synapse DW 加载到数据框中,如图所示。

但是,我收到以下错误:

AttributeError: 'DataFrameReader' object has no attribute 'sqlanalytics'
Traceback (most recent call last):

AttributeError: 'DataFrameReader' object has no attribute 'sqlanalytics'

对我做错了什么有什么想法吗?

该特定方法已将其名称更改为 synapsesql(根据注释 here),据我所知目前仅是 Scala。因此,正确的语法是:

%%spark
val df = spark.read.synapsesql("yourDb.yourSchema.yourTable")

可以通过 createOrReplaceTempView 方法与 Python 共享 Scala 数据帧,但我不确定它的效率如何。描述了混合和匹配 here。因此,对于您的示例,您可以像这样混合搭配 Scala 和 Python:

单元格 1

%%spark
// Get table from dedicated SQL pool and assign it to a dataframe with Scala
val df = spark.read.synapsesql("yourDb.yourSchema.yourTable")

// Save the dataframe as a temp view so it's accessible from PySpark
df.createOrReplaceTempView("someTable")

单元格 2

%%pyspark
## Scala dataframe is now accessible from PySpark
df = spark.sql("select * from someTable")

## !!TODO do some work in PySpark
## ...

上面的链接示例显示了如何在需要时将数据帧写回专用 SQL 池。

这是一篇关于使用 Synpase 笔记本导入/导出数据的好文章,Constraints 部分描述了限制:

https://docs.microsoft.com/en-us/azure/synapse-analytics/spark/synapse-spark-sql-pool-import-export#constraints