从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分区表了

spark读取mongodb数据写入hive表中

一 环境: spark-: hive-; scala-; hadoop--cdh-; jdk-1.8; mongodb-2.4.10; 二.数据情况: MongoDB数据格式{    "_i ...

利用SparkSQL(java版)将离线数据或实时流数据写入hive的用法及坑点

1. 通常利用SparkSQL将离线或实时流数据的SparkRDD数据写入Hive,一般有两种方法.第一种是利用org.apache.spark.sql.types.StructType和org.ap ...

如何每日增量加载数据到Hive分区表

如何每日增量加载数据到Hive分区表 hadoop hive shell crontab 加载数据 数据加载到Hive分区表(两个分区,日期(20160316)和小时(10))中 每日加载前一天的日志 ...

将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy

将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy import pandas as pd from sqlalchemy import create_engine ...

Spark操作dataFrame进行写入mysql,自定义sql的方式

业务场景: 现在项目中需要通过对spark对原始数据进行计算,然后将计算结果写入到mysql中,但是在写入的时候有个限制: 1.mysql中的目标表事先已经存在,并且当中存在主键,自增长的键id 2. ...

Pandas dataframe数据写入文件和数据库

转自:http://www.dcharm.com/?p=584 Pandas是Python下一个开源数据分析的库,它提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐操作,DataFr ...

hive中导入json格式的数据(hive分区表)

hive中建立外部分区表,外部数据格式是json的如何导入呢? json格式的数据表不必含有分区字段,只需要在hdfs目录结构中体现出分区就可以了 This is all according to t ...

将DataFrame数据如何写入到Hive表中

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

随机推荐

[Android] ListView中如何让onClick和onItemClick事件共存

ListView中如何使用Button,让onClick和onItemClick事件共存 假如ListView的一条记录包含一个TextView文本框,一个Button按钮,怎样能让点击按钮有事件响应 ...

makefile中的shell语法

在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...

关闭 VS的实时调试器

可以这样关闭: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger HKEY_LOCAL_ ...

div(固定宽度和不固定宽度)居中显示的方法总结

今天我总结一下css实现div居中的方法,有的是固定宽度的,还有的是不固定宽度的. 1.使用自动外边距实现DIV CSS居中 CSS中首选的让元素水平居中的方法就是使用margin属性—将元素的mar ...

POJ 模拟题集合

http://www.cppblog.com/Uriel/articles/101592.html 感觉这个暑假没有去年有激情啊,,,还没到状态就已经块上学了,,, 真是弱暴了,,,找几道模拟题刷刷. ...

python爬虫入门(九)Scrapy框架之数据库保存

豆瓣电影TOP 250爬取-->>>数据保存到MongoDB 豆瓣电影TOP 250网址 要求: 1.爬取豆瓣top 250电影名字.演员列表.评分和简介 2.设置随机UserAge ...

mfc基于对话框的简单四则运算计算器

1.①创建mfc对话框窗口,对话框中所有控件都delete. ②绘制界面,按键都button,显示区域edit control,计算器名字用static text. ③所有控件ID改成语义化ID(可不 ...

安装Pygame(Python3.6,windows)

1. 本机为python3.6的环境 2. 到pygame官网下载对应系统,对应python版本的pygame文件,下载地址:https://pypi.python.org/pypi/Pygame/1 ...

17 RAID与mdadm管理命令

在"14 磁盘及文件系统管理详解"中,我们详细介绍了磁盘的工作原理,但是,有一点我们一定要明白,作为现在存储数据的主要设备,机械磁盘早就是上个世纪的产品,而它的读写速度与内存.CP ...

spark写表指定外部表_spark 将dataframe数据写入Hive分区表相关推荐

  1. spark写表指定外部表_Spark SQL 之自定义删除外部表

    Spark SQL 之自定义删除外部表 前言 Spark SQL 在删除外部表时, 本不能删除外部表的数据的. 本篇文章主要介绍如何修改 Spark SQL 源码实现在删除外部表的时候, 可以带额外选 ...

  2. hive内部表和外部表的区别_3000字揭秘Greenplum的外部数据加载——外部表

    外部表是greenplum的一种数据表,它与普通表不同的地方是:外部表是用来访问存储在greenplum数据库之外的数据.如普通表一样,可使用SQL对外部表进行查询和插入操作.外部表主要用于Green ...

  3. 27.大数据---Hive的数据库和表的基本操作;脚本化运行;内部表;外部表;分区表

    一 . Hive 基本操作 1. 数据库操作(增.删.改.查) 1.1 创建数据库 create database if not exists test_001; 使用数据库 use test_001 ...

  4. hive内部表与外部表区别

    1.创建内部表与外部表的区别是什么? 2.external关键字的作用是什么? 3.外部表与内部表的区别是什么? 4.删除表的时候,内部表与外部表有什么区别? 5.load data local in ...

  5. hive 创建表_2min快速了解,Hive内部表和外部表

    在了解内部表和外部表区别前, 我们需要先了解一下Hive架构 : 大家可以简单看一下这个架构图,我介绍其中要点: Hive的数据分为两种,一种为普通数据,一种为元数据. 元数据存储着表的基本信息,增删 ...

  6. Hive关于数据表的增删改(内部表、外部表、分区表、分桶表 数据类型、分隔符类型)

    建表 基本语句格式 CREATE [external] TABLE if not exists student #默认建立内部表,加上external则是建立外部表(id int COMMENT'学号 ...

  7. Hive内部表与外部表区别详细介绍

    文章转载自:http://www.aboutyun.com/thread-7458-1-1.html 1.创建内部表与外部表的区别是什么? 2.external关键字的作用是什么? 3.外部表与内部表 ...

  8. hive 创建外部表产生java_(一)Hive表(管理表、外部表)的创建规则

    建表语句: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...

  9. Hive内部表和外部表

    hive创建内部表 hive> CREATE TABLE hT1(id INT,name STRING,hobby ARRAY<STRING>,address MAP<STRI ...

最新文章

  1. R语言par函数设置图像个数、边界、颜色等实战
  2. 错误:无法作为数据库主体执行,因为主体 dbo 不存在、无法模拟这种类型的主体,或您没有所需的权限...
  3. 甘肃关于领取软考2021年上半年合格证书的通知
  4. 我如何使用React和Typescript在freeCodeCamp中构建天气应用
  5. Java重载遇到泛型
  6. 无限复活服务器,绝地求生无限复活模式怎么玩 无限复活新手教程
  7. mysql增加最大连接数_mysql最大连接数怎么设置
  8. 典型电商网站的站点导航的布局结构实现,及运用三种方式实现下拉效果
  9. 未来教育计算机二级第一套ppt解析,计算机二级未来教育PPT部分答案
  10. [APIO2017]商旅——分数优化+floyd+SPFA判负环+二分答案
  11. Java 学习笔记之 Synchronized锁重入
  12. dalsa相机设置编码器外触发_Modicon M262 编码器接口功能介绍
  13. Java中单例模式的几种写法
  14. 转载+收藏 数理化地生常用软件
  15. [机器学习入门] 经典台大李宏毅机器学习课程从这里开始
  16. anki 神级插件 fastWQ 提取本地朗文音频
  17. 完美的迅捷PDF在线转换软件
  18. 苹果手机自带表格软件_苹果手机还自带扫描仪,没想到今天才发现
  19. PLC编程语言你知道多少
  20. tf.keras.losses.LogCosh 双曲余弦 损失函数 示例

热门文章

  1. 拒绝需求专用表情包,拿走不谢
  2. 刨根问底 Redis,面试过程真好使!
  3. Kali Linux虚拟机安装教程
  4. 反病毒常见问题及解答
  5. 等差数列(python)
  6. 修身以俟,顺受其正。
  7. MySQL cookie注入
  8. Android:代码混淆概念整理
  9. 移动安全-APK代码混淆
  10. MySQL执行脚本或连接访问报Access denied for user ‘root‘@‘%‘ to database ‘xxx‘