我認爲你是新的編程本身。 反正在這裏,你去。
基本上你指定了類型並在循環之前初始化它。
var df:DataFrame = null
for (jsonfilename <- fileArray) {
df = hivecontext.read.json(jsonfilename)
var tblLanding = df.withColumn("source_file_name", lit(jsonfilename))
}
df.registerTempTable("LandingTable") // Getting ERROR here
更新
好吧,你是完全新的節目,甚至循環。
假設fileArray通過讀取4個JSON文件具有值[1.json,2.json,3.json,4.json]
所以,環路實際創建4數據幀。 你想註冊爲臨時表的那一個。
如果所有的人,
var df:DataFrame = null
var count = 0
for (jsonfilename <- fileArray) {
df = hivecontext.read.json(jsonfilename)
var tblLanding = df.withColumn("source_file_name", lit(jsonfilename))
df.registerTempTable(s"LandingTable_$count")
count++;
}
而且理由DF爲空在此之前更新,您fileArray爲空或星火無法讀取該文件。打印並檢查。
查詢任何登記在冊的LandingTable
val df2 = hiveContext.sql("SELECT * FROM LandingTable_0")
更新 問題發生了變化,從所有的JSON文件製作一個數據幀的。
var dataFrame:DataFrame = null
for (jsonfilename <- fileArray) {
val eachDataFrame = hivecontext.read.json(jsonfilename)
if(dataFrame == null)
dataFrame = eachDataFrame
else
dataFrame = eachDataFrame.unionAll(dataFrame)
}
dataFrame.registerTempTable("LandingTable")
確保fileArray不爲空,並且fileArray中的所有json文件具有相同的架構。
謝謝@Shyamendra Solanki!這是我正在尋找的。我測試了你的代碼。它的工作原理! – Jhon
很高興有幫助。請考慮接受答案:http://stackoverflow.com/help/accepted-answer –