rdd 写入 mysql_Spark RDD写入RMDB(Mysql)方法二

在本博客的《Spark将计算结果写入到Mysql中》文章介绍了如果将 def createDataFrame(rowRDD: RDD[Row], schema: StructType): DataFrame

接收的RDD是Row类型的,他代表的是one row of output from a relational operator。第二个参数就是我们需要写入表的结构,包括了表的字段名和对应的类型,完整的代码如下: import org.apache.spark.SparkContext

import org.apache.spark.sql.Row

import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}

/**

* User: 过往记忆

* Date: 15-03-17

* Time: 上午07:24

* bolg:

* 本文地址:/archives/1290

* 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货

* 过往记忆博客微信公共帐号:iteblog_hadoop

*/

object SparkToJDBC {

def main(args: Array[String]): Unit = {

val url = "jdbc:mysql://localhost:3306/spark?user=iteblog&password=iteblog"

val sc = new SparkContext

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

val schema = StructType(

StructField("name", StringType) ::

StructField("age", IntegerType)

:: Nil)

val data = sc.parallelize(List(("iteblog", 30), ("iteblog", 29),

("com", 40), ("bt", 33), ("www", 23))).

map(item => Row.apply(item._1, item._2))

import sqlContext.implicits._

val df = sqlContext.createDataFrame(data, schema)

df.createJDBCTable(url, "sparktomysql", false)

sc.stop

}

}

DataFrame类中提供了很多写数据库的操作,本例中的createJDBCTable就是可以创建表,它的函数原型如下: def createJDBCTable(url: String, table: String, allowExisting: Boolean): Unit

table是表的名字,最后一个参数是如果表存在是否删除表的意思,false代表不删除。

DataFrame类中还有insertIntoJDBC方法,调用该函数必须保证表事先存在,它只用于插入数据,函数原型如下: def insertIntoJDBC(url: String, table: String, overwrite: Boolean): Unit

前面两个参数和createJDBCTable一致,第三个参数如果设置为true,则在插入数据之前会调用mysql的TRUNCATE TABLE语句先清掉表中的数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值