簡體   English   中英

將DataFrame加載到Hive分區時找不到表錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM