1.将DataFrame数据如何写入到Hive表中?
2.通过那个API实现创建spark临时表?
3.如何将DataFrame数据写入hive指定数据表的分区中?

从spark1.2 到spark1.3,spark SQL中的SchemaRDD变为了DataFrame,DataFrame相对于SchemaRDD有了较大改变,同时提供了更多好用且方便的API。

DataFrame将数据写入hive中时,默认的是hive默认数据库,insertInto没有指定数据库的参数,本文使用了下面方式将数据写入hive表或者hive表的分区中,仅供参考。

1、将DataFrame数据写入到Hive表中

从DataFrame类中可以看到与hive表有关的写入Api有以下几个:

registerTempTable(tableName: String): Unit,
insertInto(tableName: String): Unit

insertInto(tableName: String, overwrite: Boolean): Unit
saveAsTable(tableName: String, source: String, mode: SaveMode, options: Map[String, String]): Unit

有很多重载函数,不一一列举
registerTempTable函数是创建spark临时表

insertInto函数是向表中写入数据,可以看出此函数不能指定数据库和分区等信息,不可以直接进行写入。

向hive数据仓库写入数据必须指定数据库,hive数据表建立可以在hive上建立,或者使用hiveContext.sql(“create table ....")
下面语句是向指定数据库数据表中写入数据:

  1. case class Person(name:String,col1:Int,col2:String)
  2. val sc = new org.apache.spark.SparkContext
  3. val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
  4. import hiveContext.implicits._
  5. hiveContext.sql("use DataBaseName")
  6. val data = sc.textFile("path").map(x=>x.split("\\s+")).map(x=>Person(x(0),x(1).toInt,x(2)))
  7. data.toDF()insertInto("tableName")

复制代码

创建一个case类将RDD中数据类型转为case类类型,然后通过toDF转换为DataFrame,调用insertInto函数时,首先指定数据库,使用的是hiveContext.sql("use DataBaseName")语句,就可以将DataFrame数据写入hive数据表中了

2、将DataFrame数据写入hive指定数据表的分区中

hive数据表建立可以在hive上建立,或者使用hiveContext.sql(“create table ...."),使用saveAsTable时数据存储格式有限,默认格式为parquet,可以指定为json,如果有其他格式指定,尽量使用语句来建立hive表。

将数据写入分区表的思路是:首先将DataFrame数据写入临时表,之后是由hiveContext.sql语句将数据写入hive分区表中。具体操作如下:

  1. case class Person(name:String,col1:Int,col2:String)
  2. val sc = new org.apache.spark.SparkContext
  3. val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
  4. import hiveContext.implicits._
  5. hiveContext.sql("use DataBaseName")
  6. val data = sc.textFile("path").map(x=>x.split("\\s+")).map(x=>Person(x(0),x(1).toInt,x(2)))
  7. data.toDF().registerTempTable("table1")
  8. hiveContext.sql("insert into table2 partition(date='2015-04-02') select name,col1,col2 from table1")

复制代码

使用以上方式就可以将dataframe数据写入hive分区表了

将DataFrame数据如何写入到Hive表中相关推荐

  1. spark抽取mysql数据到hive_使用spark将内存中的数据写入到hive表中

    使用spark将内存中的数据写入到hive表中 hive-site.xml hive.metastore.uris thrift://master:9083 Thrift URI for the re ...

  2. hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。

    hive 导入hdfs数据 Preceding pen down the article, might want to stretch out appreciation to all the well ...

  3. 大数据开发实战:Hive表DDL和DML

    1.Hive 表 DDL 1.1.创建表 Hive中创建表的完整语法如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS]  table_name [ (col_nam ...

  4. 往hive表中插入与导出数据方式load ,insert ,sqoop 等方式详解

    往hive数据仓库的表中导入数据,可以直接insert ,也可以选择load方式.当然也可以通过第三方工具如sqoop等将数据导入到hive当初.特别注意:hive虽然不会验证用户装载的数据和表的模式 ...

  5. track_info分区表的创建并将ETL的数据加载到Hive表

    文章目录 track_info分区表的创建 将ETL的数据加载到Hive表 track_info分区表的创建 分区表 因为日志是一天一个分区 create external table track_i ...

  6. java 往excel中写数据库,poi将数据写入excel表格-怎么用java把数据库里的数据写入到excel表中...

    怎么用java把数据库里的数据写入到excel表中 你是想读取excel内容,然后整合一下数据,然后再生成一个新的excel吧 package aa; import java.io.FileInput ...

  7. 存在的hive插入数据_往hive表中插入数据以及导出数据

    转载:https://blog.csdn.net/qq_26442553/article/details/80380590 转载:https://blog.csdn.net/weixin_436817 ...

  8. hive表中的数据导出

    将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等 一.insert导出 将查询的结果导出到本地 insert overwrite local direc ...

  9. hive表中的数据导出:表数据的导出7种方式

    将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等 insert导出 1)将查询的结果导出到本地 :第一种 insert overwrite local ...

最新文章

  1. Spring对Hibernate事务管理
  2. 2016微软开发者峰会在京举办 纳德拉要来做演讲
  3. L2C中CtempGen层语义保持证明中环境匹配的定义
  4. 自己动手为Spark 2.x添加ALTER TABLE ADD COLUMNS语法支持
  5. 【读书笔记】—— 西方人文社科经典
  6. 基于VUE的前端框架搭建
  7. 页面显示正常,控制台报错
  8. deadline调度器之(一):原理
  9. stm32平台实现以太网转串口、485、CAN
  10. 论软件系统建模方法及其应用
  11. Hadoop基础【HDFS的shell,客户端操作、上传下载流程】
  12. java代码演示经典哲学家就餐问题,以及解决方案
  13. Vmware 和宿主机之间的网络互通
  14. system32下 exe文件作用
  15. 这是一个只有一句话的木MA
  16. Unraid配置阿里云加速镜像安装荒野无灯qBittorrent镜像
  17. 架构之——umi框架与dva的使用
  18. php函数几种写法,PHP让人不知道的匿名函数的几种写法(附代码)
  19. matlab画图nan,在Matlab中过滤包含NaN的图像?
  20. gettime 函数 java,Java ZipEntry getTime()用法及代码示例

热门文章

  1. php5.5 集成环境,windows下配置php5.5开发环境及开发扩展_PHP
  2. rtx3080 pytorch cuda_最不值得买的高端显卡!RTX3080从真香变成了鸡肋?|显卡|amd|RTX3080...
  3. mysql中给用户添加密码_MySql中添加用户,新建数据库,用户授权,删除用户,修改密码...
  4. typescript 方法后面加感叹号_TypeScript编译器SDK版本问题
  5. postgresql update使用别名_PostgreSQL逻辑复制之pglogical
  6. mysql触发器行锁_MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁
  7. html表单提交前验证,jquery表单提交前实现同步验证(附代码)
  8. matlab激光散斑散射半径测量,激光散斑测量2011412225741
  9. php+include+引入html文件,include引入文件
  10. 微信读书android换到ios,Android 微信读书本周推荐传送带列表实现