将DataFrame数据如何写入到Hive表中
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 ....")
下面语句是向指定数据库数据表中写入数据:
- case class Person(name:String,col1:Int,col2: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 = sc.textFile("path").map(x=>x.split("\\s+")).map(x=>Person(x(0),x(1).toInt,x(2)))
- 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分区表中。具体操作如下:
- case class Person(name:String,col1:Int,col2: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 = 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")
复制代码
使用以上方式就可以将dataframe数据写入hive分区表了
将DataFrame数据如何写入到Hive表中相关推荐
- spark抽取mysql数据到hive_使用spark将内存中的数据写入到hive表中
使用spark将内存中的数据写入到hive表中 hive-site.xml hive.metastore.uris thrift://master:9083 Thrift URI for the re ...
- hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。
hive 导入hdfs数据 Preceding pen down the article, might want to stretch out appreciation to all the well ...
- 大数据开发实战:Hive表DDL和DML
1.Hive 表 DDL 1.1.创建表 Hive中创建表的完整语法如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [ (col_nam ...
- 往hive表中插入与导出数据方式load ,insert ,sqoop 等方式详解
往hive数据仓库的表中导入数据,可以直接insert ,也可以选择load方式.当然也可以通过第三方工具如sqoop等将数据导入到hive当初.特别注意:hive虽然不会验证用户装载的数据和表的模式 ...
- track_info分区表的创建并将ETL的数据加载到Hive表
文章目录 track_info分区表的创建 将ETL的数据加载到Hive表 track_info分区表的创建 分区表 因为日志是一天一个分区 create external table track_i ...
- java 往excel中写数据库,poi将数据写入excel表格-怎么用java把数据库里的数据写入到excel表中...
怎么用java把数据库里的数据写入到excel表中 你是想读取excel内容,然后整合一下数据,然后再生成一个新的excel吧 package aa; import java.io.FileInput ...
- 存在的hive插入数据_往hive表中插入数据以及导出数据
转载:https://blog.csdn.net/qq_26442553/article/details/80380590 转载:https://blog.csdn.net/weixin_436817 ...
- hive表中的数据导出
将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等 一.insert导出 将查询的结果导出到本地 insert overwrite local direc ...
- hive表中的数据导出:表数据的导出7种方式
将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等 insert导出 1)将查询的结果导出到本地 :第一种 insert overwrite local ...
最新文章
- Spring对Hibernate事务管理
- 2016微软开发者峰会在京举办 纳德拉要来做演讲
- L2C中CtempGen层语义保持证明中环境匹配的定义
- 自己动手为Spark 2.x添加ALTER TABLE ADD COLUMNS语法支持
- 【读书笔记】—— 西方人文社科经典
- 基于VUE的前端框架搭建
- 页面显示正常,控制台报错
- deadline调度器之(一):原理
- stm32平台实现以太网转串口、485、CAN
- 论软件系统建模方法及其应用
- Hadoop基础【HDFS的shell,客户端操作、上传下载流程】
- java代码演示经典哲学家就餐问题,以及解决方案
- Vmware 和宿主机之间的网络互通
- system32下 exe文件作用
- 这是一个只有一句话的木MA
- Unraid配置阿里云加速镜像安装荒野无灯qBittorrent镜像
- 架构之——umi框架与dva的使用
- php函数几种写法,PHP让人不知道的匿名函数的几种写法(附代码)
- matlab画图nan,在Matlab中过滤包含NaN的图像?
- gettime 函数 java,Java ZipEntry getTime()用法及代码示例
热门文章
- php5.5 集成环境,windows下配置php5.5开发环境及开发扩展_PHP
- rtx3080 pytorch cuda_最不值得买的高端显卡!RTX3080从真香变成了鸡肋?|显卡|amd|RTX3080...
- mysql中给用户添加密码_MySql中添加用户,新建数据库,用户授权,删除用户,修改密码...
- typescript 方法后面加感叹号_TypeScript编译器SDK版本问题
- postgresql update使用别名_PostgreSQL逻辑复制之pglogical
- mysql触发器行锁_MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁
- html表单提交前验证,jquery表单提交前实现同步验证(附代码)
- matlab激光散斑散射半径测量,激光散斑测量2011412225741
- php+include+引入html文件,include引入文件
- 微信读书android换到ios,Android 微信读书本周推荐传送带列表实现