【问题标题】:Failed to save a file in azure data lake from azure data bricks无法从 azure databricks 在 azure data Lake 中保存文件
【发布时间】:2020-03-05 15:44:00
【问题描述】:

我正在尝试将字符串内容作为 XML 内容保存到 Azure 数据湖中。

一个字符串变量包含下面提到的xml内容。

<project>
    <dateformat>dd-MM-yy</dateformat>
    <timeformat>HH:mm</timeformat>
    <useCDATA>true</useCDATA>
</project>

我已使用以下代码将文件处理到数据湖中。

xmlfilewrite = "/mnt/adls/ProjectDataDecoded.xml"
with open(xmlfilewrite , "w") as f:
    f.write(project_processed_var)

它会引发以下错误: 没有这样的文件或目录:'/mnt/adls/ProjectDataDecoded.xml"

我可以使用上述挂载点访问数据湖,但无法使用上述“打开”功能。

谁能帮帮我?

【问题讨论】:

    标签: python-3.x xml apache-spark pyspark azure-databricks


    【解决方案1】:

    问题解决了。

    在数据块中,当 Azure Data Lake 上存在挂载点时,我们需要将“/dbfs”添加到路径并将其传递给 OPEN 函数。 使用下面的代码解决了这个问题

    xmlfilewrite = "/dbfs/mnt/adls/ProjectDataDecoded.xml"
    with open(xmlfilewrite , "w") as f:
        f.write(project_processed_var)
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用Spark-XML library。将您的字符串转换为数据框,其中每一行表示一个项目。然后就可以这样写到ADLS了。

      df.select("dateformat", "timeformat","useCDATA").write \
        .format('xml') \
        .options(rowTag='project', rootTag='project') \
        .save('/mnt/adls/ProjectDataDecoded.xml')
      

      这是包含外部库的方法 -https://docs.databricks.com/libraries.html#create-a-library

      【讨论】:

      • 我已尝试按照建议保存 \XML,但它以不同的格式保存,如下所示。 ``` <项目> <日期格式>dd-MM-yy</dateformat> <timeformat>HH:mm</timeformat> <useCDATA>true</useCDATA> ``` 请告诉我如何将字符串转换为数据框。
      猜你喜欢
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 2019-12-01
      • 2019-04-01
      相关资源
      最近更新 更多