将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 条评论
登录 后参与评论

相关文章

来自专栏Greenplum

Greenplum常用导数据方法及性能测试

# 生成隐藏字符 soh=`echo 1 | awk '{printf("%c", $1)}'` replaceWord=$1

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

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

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

22260
来自专栏求索之路

从零开始撸一个Fresco之总结

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

32060
来自专栏移动端开发

AVFoundation 框架初探究(二)

接着第一篇总结 ----       系列第一篇地址:AVFoundation 框架初探究(一)       在第一篇的文章中,我们总结了主要有下面几个点的知识...

41640
来自专栏Hadoop实操

【简报】CDH和HDP的合并提前终止反垄断法的等待期

2018年11月19日,Cloudera和Hortonworks联合宣布,美国联邦贸易委员会(the U.S. Federal Trade Commission...

20230
来自专栏腾讯Bugly的专栏

黑科技:程序员如何打造属于自己的分体键盘

前言 作为一名程序员,键盘在手,天下我有啊,不整个高大上的键盘怎么提升B 格。之前一直想买个机械键盘,听说机械键盘敲代码时格外舒爽,实在是提升效率与 B 格的神...

40050
来自专栏FreeBuf

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

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

26170
来自专栏移动开发之家

Android图片加载开源库深度推荐,安利Fresco1、Universal-Image-Loader 2、Picasso 3、Glide 4、Fresco

</p> 这里没有广告,这里没有跑分,数据对比Google一下比比皆是,额···那我说什么好(ノಠ益ಠ)ノ彡┻━┻。 对啊,女朋友···呸呸呸,那么就来讲一...

31220
来自专栏腾讯IVWEB团队的专栏

WebRTC 点对点直播

WebRTC 全称为:Web Real-Time Communication。它是为了解决 Web 端无法捕获音视频的能力,并且提供了 peer-to-peer...

5.2K20
来自专栏LinXunFeng的专栏

iOS - 视频采集详解

22530

扫码关注云+社区

领取腾讯云代金券