Spark:将DataFrame写入Mysql】的更多相关文章

Spark将DataFrame进行一些列处理后,需要将之写入mysql,下面是实现过程 1.mysql的信息 mysql的信息我保存在了外部的配置文件,这样方便后续的配置添加. //配置文件示例: [hdfs@iptve2e03 tmp_lillcol]$ cat job.properties #mysql数据库配置 mysql.driver=com.mysql.jdbc.Driver mysql.url=jdbc:mysql://127.0.0.1:3306/database1?useSSL=…
一.异常情况及解决方案 在使用Spark SQL的dataframe数据写入到相应的MySQL表中时,报错,错误信息如下: 代码的基本形式为: df.write.jdbc(url, result_table, prop) 根据图片中的报错,搜索资料,得知是由于Spark SQL 中的Save Mode导致的,Spark SQL的官方文档中对Savemode进行了说明: 默认情况下,使用SaveMode.ErrorIfExists,也就是说,当从Spark中插入到MySQL表中的时候,如果表已经存…
package com.jxd import org.apache.spark.SparkContextimport org.apache.spark.SparkConfimport java.sql.Connectionimport java.sql.DriverManagerobject hello { def main(args: Array[String]): Unit = { var conf = new SparkConf().setAppName("Hello World"…
package com.zjlantone.hive import java.util.Properties import com.zjlantone.hive.SparkOperaterHive.sparkSession import org.apache.spark.rdd.RDD import org.apache.spark.sql.types.StructType import org.apache.spark.{SparkConf, SparkContext} import org.…
循环创建表,并且创建主键.外键 import pandas as pd from sqlalchemy import create_engine from sqlalchemy.types import NVARCHAR, Float, Integer def pd2sql(): """ to_sql目前只支持两类mysql引擎一个是sqlalchemy和sqlliet3 :return: """ # 初始化数据库连接,使用pymysql模块 #…
最近一个项目,需要操作近70亿数据进行统计分析.如果存入MySQL,很难读取如此大的数据,即使使用搜索引擎,也是非常慢.经过调研决定借助我们公司大数据平台结合Spark技术完成这么大数据量的统计分析. 为了后期方便开发人员开发,决定写了几个工具类,屏蔽对MySQL及Hive的操作代码,只需要关心业务代码的编写. 工具类如下: 一. Spark操作MySQL 1. 根据sql语句获取Spark DataFrame: /** * 从MySql数据库中获取DateFrame * * @param sp…
业务场景: 现在项目中需要通过对spark对原始数据进行计算,然后将计算结果写入到mysql中,但是在写入的时候有个限制: 1.mysql中的目标表事先已经存在,并且当中存在主键,自增长的键id 2.在进行将dataFrame写入表的时候,id字段不允许手动写入,因为其实自增长的 要求: 1.写入数据库的时候,需要指定字段写入,也就是说,只指定部分字段写入 2.在写入数据库的时候,对于操作主键相同的记录要实现更新操作,非插入操作 分析: spark本身提供了对dataframe的写入数据库的操作…
将DataFrame写成文件方法有很多最简单的将DataFrame转换成RDD,通过saveASTextFile进行保存但是这个方法存在一些局限性:1.将DataFrame转换成RDD或导致数据结构的改变2.RDD的saveASTextFile如果文件存在则无法写入,也就意味着数据只能覆盖无法追加,对于有数据追加需求的人很不友好3.如果数据需要二次处理,RDD指定分隔符比较繁琐 基于以上原因,在研读了Spark的官方文档后,决定采取DataFrame的自带方法 write 来实现.此处采用mys…
数据本地性 数据计算尽可能在数据所在的节点上运行,这样可以减少数据在网络上的传输,毕竟移动计算比移动数据代价小很多.进一步看,数据如果在运行节点的内存中,就能够进一步减少磁盘的I/O的传输.在spark中,数据本地性优先级从高到低为PROCESS_LOCAL>NODE_LOCAL>NO_PREF>RACK_LOACL>ANY即最好是运行在节点内存中的数据,次要是同一个NODE,再次是同机架,最后是任意位置.        PROCESS_LOCAL   进程本地化:task要计算的…
Spark是目前最流行的分布式计算框架,而HBase则是在HDFS之上的列式分布式存储引擎,基于Spark做离线或者实时计算,数据结果保存在HBase中是目前很流行的做法.例如用户画像.单品画像.推荐系统等都可以用HBase作为存储媒介,供客户端使用. 因此Spark如何向HBase中写数据就成为很重要的一个环节了.本文将会介绍三种写入的方式,其中一种还在期待中,暂且官网即可... 代码在spark 2.2.0版本亲测 1. 基于HBase API批量写入 第一种是最简单的使用方式了,就是基于R…