Spark之 使用SparkSql操作mysql和DataFrame的Scala实现
通过读取文件转换成DataFrame数据写入到mysql中
package com.zy.sparksql import java.util.Properties import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
import org.apache.spark.sql.types.{IntegerType, StringType, StructType} /**
* 通过读取文件转换成DataFrame数据写入到mysql中
*/
object SparkSqlToMysql {
def main(args: Array[String]): Unit = {
//创建sparkSession
val sparkSession: SparkSession = SparkSession.builder().appName("SparkSqlToMysql").master("local").getOrCreate()
//读取数据
val sc: SparkContext = sparkSession.sparkContext
val fileRDD: RDD[String] = sc.textFile("D:\\person.txt")
//切分
val lineRDD: RDD[Array[String]] = fileRDD.map(_.split(",")) //关联 通过StructType指定schema将rdd转换成DataFrame
val rowRDD: RDD[Row] = lineRDD.map(x => Row(x(0).toInt, x(1), x(2).toInt))
val schema = (new StructType).add("id", IntegerType, true).add("name", StringType, true).add("age", IntegerType, true)
//根据rdd和schema创建DataFrame
val personDF: DataFrame = sparkSession.createDataFrame(rowRDD, schema) //将df注册成表
personDF.createOrReplaceTempView("person") //操作表
val resultDF: DataFrame = sparkSession.sql("select * from person order by age desc") //将数据存到mysql中
//创建properties对象 设置连接mysql的信息
val prop: Properties = new Properties()
prop.setProperty("user", "root")
prop.setProperty("password", "root") /** mode方法可以指定数据插入模式
* overwrite:覆盖,覆盖表中已经存在的数据,如果表不存在它会事先帮你创建
* append:追加,向表中追加数据,如果表不存在它会事先帮你创建
* ignore:忽略,表示如果表事先存在,就不进行任何操作
* error :如果表存在就报错,它是默认选项
*/
resultDF.write.mode("error").jdbc("jdbc:mysql://192.168.44.31:3306/spark", "person", prop) sparkSession.stop()
}
}
从mysql中读取数据到DataFrame中
package com.zy.sparksql
import java.util.Properties
import org.apache.spark.sql.{DataFrame, SparkSession}
/**
* 从mysql中读取数据到DataFrame中
*/
object DataFromMysql {
def main(args: Array[String]): Unit = {
//创建sparkSession
val sparkSession: SparkSession = SparkSession.builder().appName("DataFromMysql").master("local").getOrCreate()
//创建properties对象 设置连接mysql的信息
val prop: Properties = new Properties()
prop.setProperty("user", "root")
prop.setProperty("password", "root")
//读取mysql数据
val mysqlDF: DataFrame = sparkSession.read.jdbc("jdbc:mysql://192.168.44.31:3306/spark", "person", prop)
mysqlDF.show()
sparkSession.stop()
}
}
Spark之 使用SparkSql操作mysql和DataFrame的Scala实现的更多相关文章
- 【Spark篇】---SparkSQL初始和创建DataFrame的几种方式
一.前述 1.SparkSQL介绍 Hive是Shark的前身,Shark是SparkSQL的前身,SparkSQL产生的根本原因是其完全脱离了Hive的限制. SparkSQL支持查询原 ...
- Spark之 使用SparkSql操作Hive的Scala程序实现
依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2 ...
- Spark记录-SparkSQL远程操作MySQL和ORACLE
1.项目引入mysql和oracle驱动 2.将mysql和oracle驱动上传到hdfs 3.远程调试源代码如下: import org.apache.spark.sql.SQLContext im ...
- 在spark中操作mysql数据 ---- spark学习之七
使用spark的 DataFrame 来操作mysql数据. DataFrame是比RDD更高一个级别的抽象,可以应用SQL语句进行操作,详细参考: https://spark.apache.org/ ...
- Spark操作MySQL,Hive并写入MySQL数据库
最近一个项目,需要操作近70亿数据进行统计分析.如果存入MySQL,很难读取如此大的数据,即使使用搜索引擎,也是非常慢.经过调研决定借助我们公司大数据平台结合Spark技术完成这么大数据量的统计分析. ...
- [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:
[Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...
- sparksql连接mysql
1.方法1:分别将两张表中的数据加载为DataFrame /* * 方法1:分别将两张表中的数据加载为DataFrame * */ /* Map<String,String> option ...
- JAVA SparkSQL初始和创建DataFrame的几种方式
建议参考SparkSQL官方文档:http://spark.apache.org/docs/latest/sql-programming-guide.html 一.前述 1.SparkSQ ...
- sparksql 操作hive
写在前面:hive的版本是1.2.1spark的版本是1.6.x http://spark.apache.org/docs/1.6.1/sql-programming-guide.html#hive- ...
随机推荐
- 使用distillery 实现版本的动态升级&& 动态降级
备注: distillery 使用很棒的elixir 打包构建工具,下面演示的是升级以及降级 1. 参考项目 https://github.com/rongfengliang/phoenix-r ...
- nginx 启用http2 https 无法访问的问题
原因: 1. openssl 版本过低 解决方法:进行升级 yum update openssl 2.ssl_ciphers 配置有问题 解决方法:修改为 ssl_ci ...
- 简明 Python 教程--学习记录
注意,我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符.这样做有点难看,不过确实简单有效. print # prints a blank line 注意,没有返回值 ...
- textArea中的maxlength是无效的 解决办法
-------------------------------------------------------------------------------------- <s:texta ...
- coding 绑定腾讯云开放平台注意事项
coding升级后需要绑定腾讯云开放平台,按照coding文档的提示操作就好 1.创建腾讯云平台后,不要自定义邮箱和用户名 2.直接绑定原来我们使用的coding账号即可 绑定成功后,邮箱和用户名会自 ...
- ubuntu 进入单用户模式
进入单用户模式: 按shift进入 1.开机到grub时,用上下键移到第二行的恢复模式,按e(注意不是回车) 即Ubuntu,With Linux 3.2.0-23-generic(recovery ...
- An Autofac Lifetime Primer
Or, “Avoiding Memory Leaks in Managed Composition” Understanding lifetime can be pretty tough when y ...
- Oracle ASM操作管理
查看ASM磁盘情况 SQL> select group_number,disk_number,mount_status,header_status,mode_status,state,failg ...
- 【转】BMR(Block Media Recovery)
关于RMAN的块恢复.Block是oracle数据库最小恢复单位.鉴于此,BMR可以大大缩短恢复的时间,另外,在进行BMR时不需要停掉数据库,可以直接在数据库open状态对数据文件进行恢复,只是需要恢 ...
- VS2013相关
A.安装VS2013的离线msdn帮助文档.原文地址:https://www.cnblogs.com/strangekitty/p/4707400.html 作为vs的初学者,安装帮助文档有利于快速掌 ...