关于spark使用DF写入到数据库mysql
来源:互联网 发布:2016年农村信用社数据 编辑:程序博客网 时间:2024/06/15 01:10
package sparkimport java.util.Propertiesimport org.apache.spark.SparkContextimport org.apache.spark.sql.{Row, SaveMode}import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}/** * Created by sunfei on 2017/7/7. OK */object sparkTOsql { def main(args: Array[String]): Unit = { val url = "jdbc:mysql://10.10.10.158:3306/spark?user=root&password=123456" val sc = new SparkContext val sqlContext = new org.apache.spark.sql.SQLContext(sc) val schema = StructType( StructField("name", StringType) :: StructField("count", IntegerType) :: Nil) val data = sc.parallelize(List(("www", 30), ("baidu", 29), ("com", 40), ("bt", 33), ("cn", 23))). map(item => Row.apply(item._1, item._2)) import sqlContext.implicits._ val df = sqlContext.createDataFrame(data, schema)// df.createJDBCTable(url, "bolg", false)// df.insertIntoJDBC(url, "blog", false) val url2 = "jdbc:mysql://10.10.10.158:3306/spark" val connectionProperties2 = new Properties() connectionProperties2.setProperty("user", "root");// 设置用户名 connectionProperties2.setProperty("password", "123456");// 设置密码 df.write.mode(SaveMode.Append).jdbc(url2, "blog", connectionProperties2) sc.stop }}
前面是关于rdd转换成DF的操作 新建一个scheme 然后对应
SparkSQL提供了两种方式把RDD转换为DataFrame。
第一种通过反射(前提是知道schema),第二种通过提供的接口创建schema。
通过反射:
scala提供了一种通过case class把RDD转换为DataFrame,case clasee定义了表结构,通过反射的方式读取参数并转换为字段,case class也可以是嵌套的复杂序列或数组。这样RDD就可以隐式的转换为DataFrame,df再注册为内存表,就可以通过sql操作此表。
当某些情况下case class不能提前定义时,就用这种方法,一般分三步:
1.通过原始RDD创建RDD的Rows
2.通过StructType匹配RowS里的结构创建schema
3.通过SQLContext提供的createDataFrame(row,schema)方法创建DataFrame
例:scala
后面的是df写入到数据库- // SaveMode.Append:在数据源后添加;
- // SaveMode.Overwrite:如果如果数据源已经存在记录,则覆盖;
- // SaveMode.ErrorIfExists:如果如果数据源已经存在记录,则包异常;
- // SaveMode.Ignore:如果如果数据源已经存在记录,则忽略;
执行命令 spark-submit --master local --class spark.sparkTOsql --driver-class-path /home/mysql-connector-java-5.1.12-bin.jar /home/tetsql2.jar
阅读全文
1 0
- 关于spark使用DF写入到数据库mysql
- Spark写入数据到MySQL
- spark将计算结果写入到mysql中
- Spark将计算结果写入到Mysql中
- Spark将计算结果写入到Mysql中
- 关于写入MySQL数据库乱码问题
- 使用AspectJ实现将写入FTP服务的数据转存到Mysql数据库的解决方案
- DF Engine Export 无法到处到数据库
- 二维码写入到数据库
- 二维码写入到数据库
- 关于hibernate中文写入mysql数据库乱码问题
- 关于hibernate写入mysql数据库乱码的问题
- log4j写入mysql数据库
- 写入mysql数据库
- 使用JDBC写入blob数据到数据库以及读取数据
- Spark/scala 写数据到Mysql数据库方法一
- Spark/scala 写数据到Mysql数据库方法二
- spark DataFrame 使用Java读取mysql和写入mysql的例子
- 语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet
- Maven库
- 微信浏览器横屏显示问题
- 监听EditText的内容长度
- Android 修改PagerSlidingTabStrip 高亮选中标题
- 关于spark使用DF写入到数据库mysql
- 构建Qt中的Opencv库的工程
- bzoj4627
- mybatis一级缓存问题导致第二次查询结果出现变化
- Linux shell 常用命令
- spring 设置返回数据格式及json的fastjson配置
- MySQL 集群服务简介
- java-设计模式- 单例模式
- ScheduledThreadPoolExecutor 定时任务demo