【问题标题】:Loading Data from Azure Synapse Database into a DataFrame with Notebook使用 Notebook 将 Azure Synapse 数据库中的数据加载到 DataFrame
【发布时间】:2021-10-19 07:52:56
【问题描述】:

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

但是,我收到以下错误:

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

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

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

【问题讨论】:

    标签: apache-spark azure-synapse


    【解决方案1】:

    该特定方法已将其名称更改为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

    【讨论】:

    • 您好@wBob 是否不可能在 PySpark 中实现您在上面描述的所有内容?基本上,是不是不能用 PySpark 读入数据?
    • 可以设置自己的 JDBC 连接字符串等,网上也有示例,但我认为这不值得。笔记本体验允许您在需要时混合和匹配语言,所以我不会太担心。您可以添加一个建议,即为 PySpark here 实现此读取 API 并对其进行投票。
    • 谢谢@wbob。非常感谢。
    猜你喜欢
    • 2021-10-18
    • 2021-04-19
    • 2020-08-29
    • 2020-12-27
    • 2021-06-09
    • 2022-11-30
    • 2021-01-30
    • 2022-09-28
    • 2021-04-10
    相关资源
    最近更新 更多