首页 > 代码库 > Hive:Spark中如何实现将rdd结果插入到hive1.3.1表中
Hive:Spark中如何实现将rdd结果插入到hive1.3.1表中
- DataFrame写入hive API:
- registerTempTable函数是创建spark临时表
- insertInto函数是向表中写入数据,可以看出此函数不能指定数据库和分区等信息,不可以直接进行写入。
- 向hive数据仓库写入数据必须指定数据库,hive数据表建立可以在hive上建立,或者使用hiveContext.sql(“create table ....")
case class Person(name:String,col1:Int,col2:String)def main(args:Array[String]){ val sc = new org.apache.spark.SparkContext val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc) import hiveContext.implicits._ hiveContext.sql("use DataBaseName") val data = http://www.mamicode.com/sc.textFile("path").map(x=>x.split("\\s+")).map(x=>Person(x(0),x(1).toInt,x(2))) data.toDF()insertInto("tableName")}
将DataFrame数据写入hive指定数据表的分区中
- hive数据表建立可以在hive上建立,或者使用hiveContext.sql(“create table ....")
- 使用saveAsTable时数据存储格式有限,默认格式为parquet,可以指定为json,如果有其他格式指定,尽量使用语句来建立hive表。
将数据写入分区表的思路是:首先将DataFrame数据写入临时表,之后是由hiveContext.sql语句将数据写入hive分区表中。具体操作如下:
case class Person(name:String,col1:Int,col2:String)def main(args:Array[String]):Unit={ val sc = new org.apache.spark.SparkContext val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc) import hiveContext.implicits._ hiveContext.sql("use DataBaseName") val data = sc.textFile("path").map(x=>x.split("\\s+")).map(x=>Person(x(0),x(1).toInt,x(2))) data.toDF().registerTempTable("table1") hiveContext.sql("insert into table2 partition(date=‘2015-04-02‘) select name,col1,col2 from table1")}
声明本文转自:http://www.aboutyun.com/thread-12392-1-1.html
Hive:Spark中如何实现将rdd结果插入到hive1.3.1表中
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。