将SparkSQL计算结果写入Mysql中

编写代码

package com.itunic.sql


import java.util.Properties

import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}
import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by c on 2017/1/3.
  *  Spark SQL
  *  将数据写入到MySQL中
  * by me:
  * 我本沉默是关注互联网以及分享IT相关工作经验的博客,
  * 主要涵盖了操作系统运维、计算机编程、项目开发以及系统架构等经验。
  * 博客宗旨:把最实用的经验,分享给最需要的你,
  * 希望每一位来访的朋友都能有所收获!
  */
object JdbcRDD {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("JdbcRDD").setMaster("local")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)
 //通过并行化创建RDD
    val personRDD = sc.parallelize(Array("1 tom 5", "2 jerry 3", "3 kitty 6")).map(_.split(" "))
 //通过StructType直接指定每个字段的schema
    val schema = StructType(
      List(
        StructField("id", IntegerType, true),
        StructField("name", StringType, true),
        StructField("age", IntegerType, true)
      )
    )
 //将RDD映射到rowRDD
    val rowRDD = personRDD.map(p => Row(p(0).toInt, p(1).trim, p(2).toInt))
 //将schema信息应用到rowRDD上
    val personDataFrame = sqlContext.createDataFrame(rowRDD, schema)
 //创建Properties存储数据库相关属性
    val prop = new Properties()
    prop.put("user", "root")
    prop.put("password", "root")
 //将数据追加到数据库
    personDataFrame.write.mode("append").jdbc("jdbc:mysql://192.168.155.1:3306/test", "test.t_person", prop)
 //停止SparkContext
    sc.stop()
  }
}

打包并发布到spark集群

$SPARK_HOME/bin/spark-submit \
--class com.itunic.sql.JdbcRDD \
--master spark://ResourceManagerServer1:7077 \
--jars /usr/local/spark-1.5.2-bin-hadoop2.6/mysql-connector-java-5.1.35-bin.jar \
--driver-class-path /usr/local/spark-1.5.2-bin-hadoop2.6/mysql-connector-java-5.1.35-bin.jar \
/root/spark-mvn-1.0-SNAPSHOT.jar

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Youngxj

EMLOG博客添加OwO表情教程

2196
来自专栏web编程技术分享

sql实现简单自增长

3136
来自专栏贾老师の博客

网络数据帧与 MTU

1744
来自专栏FreeBuf

这货不是电源:硬件渗透测试平台 – Power Pwn

Power Pwn是由美国国防部高级计划研究局(DARPA)牵头开发的硬件集成化渗透测试平台,其目标是帮助企业或个人发现安全漏洞。 Power Pwn外形与普通...

2167
来自专栏一名叫大蕉的程序员

一行Spark代码的诞生记(深度剖析Spark架构)

大家好,我是一行Spark代码,我叫小小小蕉,不知道为毛,我爸爸大蕉和我妈妈大大蕉把我生的又瘦又长。长这样。 val sssjiao = new SparkCo...

2096
来自专栏杨建荣的学习笔记

关于抓取session信息的一个脚本(r3笔记第8天)

关于session的诊断,可以基于动态性能视图,ash,awr.. 自己也写过一些简单的脚本,在平时的工作中也能够完成一些基本的工作。今天在看taner分享的脚...

3416
来自专栏雪胖纸的玩蛇日常

Vue+Django2.0 REST framework打造前后端分离的生鲜电商项目(三)设计数据库以及导入原始数据

4005
来自专栏MelonTeam专栏

Make WeChat Great Again

导语: 关闭朋友圈有一年多了,突然有一天微信的策略变了,在关闭朋友圈的同时也不让别人查看自己的朋友圈了。有妹子表示看不到我朋友圈很不爽,于是我决定对微信进行一番...

3817
来自专栏求索之路

从零开始撸一个Fresco之总结

Fresco是一个比较大的开源项目,类的总数超过450个。经过一个来月的翻译,终于将绝大部分Fresco的源码翻译完毕了,也写了几篇Fresco各个模块的分析...

2966
来自专栏逍遥剑客的游戏开发

Nebula3的场景管理

1416

扫码关注云+社区