[英]Populate a Properties Object from Spark Databricks File System
TL:博士
有沒有辦法從 Databricks 文件系統中讀取 Scala/Java 屬性文件?
或者,有沒有辦法將 spark 數據幀 Rows 轉換為一組文本鍵/值對(Scala 會理解)?
完整問題:
屬性文件不是本地的,它位於 Databricks 集群上。 使用scala.io.Source
庫時,嘗試從“dbfs:/”或“/dbfs”讀取文件失敗。 我的猜測是 Scala Source 無法識別 Databricks 文件系統的 URI(?)。
I'm able to read the file into a Spark Dataframe however, but attempts to populate a java.utils.Properties
object fail with an error that it doesn't accept the Spark Dataframe "ROW" type. 我嘗試將數據框更改為數組和列表,但遇到了相同的類型不匹配。 例如, java.util.List[org.apache.spark.sql.Row]
是將數據幀轉換為列表時得到的。 我猜這意味着dataFrameObject.collectAsList()
制作了一個火花行列表,而不是鍵/值對的文本列表。
顯然我是 Scala 的新手......如果沒有辦法直接從 DBFS 讀取/加載我的屬性文件,有沒有辦法將 spark Row 轉換為鍵/值對或字節流?
干杯和感謝,西蒙
如果您使用的是完整版的 Databricks,而不是社區版,那么您應該能夠通過/dbfs/_the_rest_of_your_path_without_dbfs:/_...
訪問 DBFS 上的文件
但是,如果您無法訪問/dbfs/...
,那么您仍然可以按以下方式加載屬性:
text
格式將文件加載到 Spark.getString(0)
獲取行的第一個元素),然后使用mkString
將所有行合並在一起val path_to_file = "dbfs:/something...."
val df = spark.read.format("text").load(path_to_file)
val allTextg = df.collect().map(_.getString(0)).mkString("\n")
val reader = new java.io.StringReader(allText)
val props = new java.util.Properties()
props.load(reader)
reader.close()
您可以檢查是否已加載屬性
props.list(System.out)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.