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