[英]Table not found error while loading DataFrame into a Hive partition
我試圖像這樣將數據插入到Hive表中:
val partfile = sc.textFile("partfile")
val partdata = partfile.map(p => p.split(","))
val partSchema = StructType(Array(StructField("id",IntegerType,true),StructField("name",StringType,true),StructField("salary",IntegerType,true),StructField("dept",StringType,true),StructField("location",StringType,true)))
val partRDD = partdata.map(p => Row(p(0).toInt,p(1),p(2).toInt,p(3),p(4)))
val partDF = sqlContext.createDataFrame(partRDD, partSchema)
我導入的軟件包:
import org.apache.spark.sql.Row
import org.apache.spark.sql.Row
import org.apache.spark.sql.types.{StructType,StructField,StringType,IntegerType}
import org.apache.spark.sql.types._
這是我嘗試將數據框插入Hive分區的方式:
partDF.write.mode(saveMode.Append).partitionBy("location").insertInto("parttab")
即使我有配置單元表,我也收到以下錯誤:
org.apache.spark.sql.AnalysisException: Table not found: parttab;
誰能告訴我我在這里做的錯誤是什么,我該如何糾正?
要將數據寫入Hive倉庫,您需要初始化hiveContext
實例。
完成后,它將從Hive-Site.xml
(來自classpath)獲取conf; 並連接到基礎Hive倉庫。
HiveContext
是對SQLContext
的擴展,以支持並連接到SQLContext
。
為此,請嘗試以下操作:
val hc = new HiveContext(sc)
並在此實例上執行append-query
。
partDF.registerAsTempTable("temp")
hc.sql(".... <normal sql query to pick data from table `temp`; and insert in to Hive table > ....")
請確保表parttab
在db- default
。
如果表位於另一個db下,則表名應指定為: <db-name>.parttab
如果您需要直接將dataframe
保存到配置單元中,請執行以下操作: 用這個:
df.saveAsTable("<db-name>.parttab")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.