【问题标题】:How to access XML file from Azure Data Lake Gen2 and transform it into data-frame in Azure Databricks?如何从 Azure Data Lake Gen2 访问 XML 文件并将其转换为 Azure Databricks 中的数据框?
【发布时间】:2020-02-14 15:28:13
【问题描述】:

我们需要访问位于 Azure Data Lake Gen2 中的 XML 文件并将其转换为如下所示的数据帧。

示例 XML 数据:

<SOAP-ENV:Envelope
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

<SOAP-ENV:Body>
           <ns2:getProjectsResponse
               xmlns:ns2="http://www.logic8.com/eq/webservices/generated">
               <ns2:Project>
                   <ns2:fileName>P10001</ns2:fileName>
                   <ns2:alias>project1</ns2:alias>
               </ns2:Project>
               <ns2:Project>
                   <ns2:fileName>P10002</ns2:fileName>
                   <ns2:alias>project2</ns2:alias>
               </ns2:Project>
       <ns2:Project>
                   <ns2:fileName>P10003</ns2:fileName>
                   <ns2:alias>project3</ns2:alias>
               </ns2:Project>
           </ns2:getProjectsResponse>
       </SOAP-ENV:Body>
   </SOAP-ENV:Envelope>

预期的数据框输出:

谁能帮帮我。

【问题讨论】:

标签: python-3.x azure-functions azure-data-lake azure-databricks


【解决方案1】:

首先,您需要学习从 Azure Data Lake Gen2 读取数据到 Azure databricks。

你可以学习很多教程:

  1. Databricks: Importing data from a Blob storage。本博文介绍将数据从 Blob 存储导入 Azure 数据块。
  2. Databricks Azure Blob Storage:这篇文章解释了如何 通过使用 DBFS 挂载存储或直接访问 Azure Blob 存储 使用 API。

其次,关于xml数据类型,您需要使用@Axel R在评论中提供的databricks spark-xml library

  1. 将 spark-xml 库导入您的工作区 https://docs.databricks.com/user-guide/libraries.html#create-a-library (在 maven/spark 包部分搜索 spark-xml 并导入)
  2. 将库附加到您的集群 https://docs.databricks.com/user-guide/libraries.html#attach-a-library-to-a-cluster
  3. 在笔记本中使用以下代码读取 xml 文件,其中 "note" 是 xml 文件的根目录。

xmldata = spark.read.format('xml').option("rootTag","note").load('dbfs:/mnt/mydatafolder/xmls/note.xml')

请参考:How can I read a XML file Azure Databricks Spark.

结合这些文件,我想你可以找出你的问题。我对 Azure Databricks 了解不多,很抱歉无法为您测试。

希望这会有所帮助。

【讨论】:

  • 是否可以不挂载读取文件?我不希望数据湖随时暴露给有权访问数据块资源的任何人,因此我无法挂载数据湖。
猜你喜欢
  • 2020-07-21
  • 2019-09-10
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
相关资源
最近更新 更多