簡體   English   中英

從 Azure Databricks 中的 azure 存儲容器讀取文件並修改文件名

[英]Read files And Modify filename from the azure storage containers in Azure Databricks

我正在攝取大型 XML 文件並根據 XML 元素生成單獨的 JSON,我在 azure 數據塊中使用 SPARK-XML。 將 json 文件創建為的代碼

commercialInfo
.write
.mode(SaveMode.Overwrite)
.json("/mnt/processed/" + "commercialInfo")

我能夠提取 XML 元素節點並寫入 Azure 存儲容器。 在容器中創建了一個文件夾,在該文件夾中,我們使用 guid 命名而不是文件名。

在此處輸入圖片說明

任何人都可以建議我們是否可以控制在容器中創建的文件名,即將 part-0000 轉換為有意義的名稱,以便可以使用某些 Azure Blob 觸發器讀取它。

不幸的是,使用標准 spark 庫無法控制文件名,但您可以使用 Hadoop API 來管理文件系統 - 將輸出保存在臨時目錄中,然后將文件移動到請求的路徑。

Spark 使用 Hadoop 文件格式,它需要對數據進行分區——這就是為什么你有part-0000文件的原因。

為了更改文件名,請嘗試在您的代碼中添加如下內容:

在 Scala 中,它看起來像:

import org.apache.hadoop.fs._
val fs = FileSystem.get(sc.hadoopConfiguration)
val file = fs.globStatus(new Path("path/file.csv/part*"))(0).getPath().getName()

fs.rename(new Path("csvDirectory/" + file), new Path("mydata.csv"))
fs.delete(new Path("mydata.csv-temp"), true)

或者

import org.apache.hadoop.fs._
val fs = FileSystem.get(sc.hadoopConfiguration)
fs.rename(new Path("csvDirectory/data.csv/part-0000"), new Path("csvDirectory/newData.csv"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM