[英]Uploading files from Azure Blob Storage to SFTP location using Databricks?
[英]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.