如何在 Databricks 上将 Azure Synapse Dataframe 转换为 JSON?

Posted

技术标签:

【中文标题】如何在 Databricks 上将 Azure Synapse Dataframe 转换为 JSON?【英文标题】:How to convert Azure Synapse Dataframe into JSON on Databricks? 【发布时间】:2021-08-18 12:24:04 【问题描述】:

我可以将我的 Azure Synapse Dataframe 转换为 JSON 吗?因为当我尝试它时,它出错了。我使用脚本作为 Pandas DataFrame 函数df.to_json(),因为我假设 Azure Synapse Dataframe 与 Pandas DataFrame 相同。

这是我的突触脚本:

class UtilAzSynapse(UtilAzSynapse):
    @staticmethod
    def write_to_synapse(df, table, write_mode, url, tempDir):
        log_msg = 
            "table": table,
            "url": url,
            "tempDir": tempDir
        
        UtilInfo.pnt("UtilAzSynapse.write_to_synapse log:\n" +
                     json.dumps(log_msg, indent=4))
        
        (df.write
          .format("com.databricks.spark.sqldw") # Commented at 20200121 Sql dw connetion exception (email keyword: Databricks cannot access the DW)
#         .format("jdbc") # Added at 20200121
          .option("tableOptions", "CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN") # Added at 20200121
          .option("url", url)
          .option("dbtable", table)
          .option("forward_spark_azure_storage_credentials","True")
          .option("tempdir", tempDir)         
          .mode(write_mode)
          .save()
        )

这就是我选择我的桌子的时候

temp_write_dir = azBlob.get_blob_path(
    container = '03-analyse',
    folder_path = f"params['working_dir']/sqlDwWriteTempDirs"
)
print(f"temp_write_dir = temp_write_dir")
df_dim_store = azSynapse._read_from_synapse(fact_sales_sql, tempDir=temp_read_dir)
df_dim_store = df_dim_store.to_json()

错误:

AttributeError: 'DataFrame' object has no attribute 'to_json'

为什么我需要将我的 DataFrame 转换为 JSON 是因为当我尝试使用我的 write_to_synapse 函数时,它被解释为 DataFrame 需要转换为 JSON 格式。

【问题讨论】:

【参考方案1】:

pyspark 数据帧与 pandas 数据帧不同。

在 pyspark 中你应该可以做到:

df.toJSON()

您可以在这里找到更多信息:pyspark.sql.DataFrame.toJSON

【讨论】:

以上是关于如何在 Databricks 上将 Azure Synapse Dataframe 转换为 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

Azure Databricks:如何在 Databricks 群集中添加 Spark 配置

如何强制 Azure 数据工厂数据流使用 Databricks

Databricks + ADF + ADLS2 + Hive = Azure Synapse

如何获取 Azure Databricks 笔记本运行详细信息

如何在 Python 中从 Azure Databricks 插入 Azure SQL 数据库

如何在 Azure 数据工厂的 Databricks 上运行 .Net spark 作业?