我有一個目錄像這裏麪包含了JSON文件JSON模式顯示與文件架構以及目錄名
/user/myuser/check/database=helloworld/table=program/proc_dt=2017-04-04/part-00000
JSON文件架構內容如下:
hadoop fs -cat /user/myuser/check/database=helloworld/table=program/proc_dt=2017-04-04/part-00000
{「工作類型「:」Producer「,」person_id「:」7d422349554「,」order「:」1「,」entity_id「:」123「} {」job_type「:」Producer「,」person_id「:」af7dc39bc「,」order 「:」3「,」entity_id「:」f2323「}
當我嘗試使用下面的命令從json文件讀取模式時,我也在模式中獲取目錄的名稱。
import scala.collection.mutable.ArrayBuffer
var flattenedDatasetPath = "/user/myuser/check/database=helloworld/table=program/proc_dt=2017-04-04/"
var flattenedFileSchemaList = ArrayBuffer[String]()
val flattenedDataSetDF = sqlContext.read.json(flattenedDatasetPath)
var fieldNamesArr=flattenedDataSetDF.schema.fields
for(f<-fieldNamesArr){
println(f.name)
flattenedFileSchemaList+=f.name
}
這是我得到的
entity_id
job_type
order
person_id
database
table
proc_dt
爲什麼目錄名來作爲模式的一部分輸出?
該物業是爲了隱藏分區山坳的數據類型。我有火花1.5.2版本。有什麼辦法可以隱藏目錄發現。根據該文檔,它將在1.6版本中發佈。 「從Spark 1.6.0開始,默認情況下分區發現僅在給定路徑下找到分區。」 – DebD
它也支持1.5.2。我添加的鏈接是相同的版本。 – mrsrinivas
我嘗試將屬性設置爲false,但仍然讀取目錄名稱。它在文檔中提到屬性「spark.sql.sources.partitionColumnTypeInference.enabled」適用於數據類型,但不適用於col發現。 – DebD