spark rdd mysql_Spark RDD写入RMDB(Mysql)的方法

Spark 1.3.0引入了DataFrame类,使得RDD写入MySQL等关系型数据库变得更加方便。通过SQLContext创建DataFrame对象,然后使用createDataFrame方法和createJDBCTable或insertIntoJDBC方法进行数据库操作。文章介绍了如何使用这些方法将数据写入MySQL,包括创建表和插入数据的步骤。
摘要由CSDN通过智能技术生成

Spark RDD写入RMDB(Mysql)的方法

前面我们介绍了如果将Spark计算后的RDD最终写入Mysql等关系型数据库中,可是这些写操作都是自己实现的,操作起来有点麻烦。不过令人高兴的是,前几天发布的Spark 1.3.0里已经内置了读写关系型数据库的方法,我们可以直接在代码里面调用这个。

Spark 1.3.0中对数据库写操作是通过DataFrame类实现的,这个类也是新增的,是将之前的SchemaRDD重命名之后又定义了一些新方法的类。我们需要通过SQLContext来构造DataFrame对象,在SQLContext类中提供了大量可以构造DataFrame对象的方法,感兴趣的可以去看下。本文是通过SQLContext类中的createDataFrame方法来构造的。函数原型共大家参考,如下所示:

1def createDataFrame(rowRDD: RDD[Row], schema: StructType): DataFrame

接收的RDD是Row类型的,它代表的是one row of output from a relational operator。上面的第二个参数就是我们需要写入表的结构,包括了表的字段名与对应的类型,完整的代码如图1所示:

56dc4a07ca7e622644696d192f5c2f9a.png

图1

DataFrame类中提供了很多写数据库的操作,在本例中的createJDBCTable就是可以创建表,它的函数原型如下所示:

1def createJDBCTable(url: String, table: String, allowExisting: Boolean): Unit

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

DataFrame类中还有insertIntoJDBC方法,必须保证表事先存才能调用该函数在,它只用于插入数据,函数原型如下:

1def insertIntoJDBC(url: String, table: String, overwrite: Boolean): Unit

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

本博客文章除特别声明,全部都是原创!

尊重原创,转载请注明: 转载自过往记忆(http://www.iteblog.com/)

本文链接: (http://www.iteblog.com/archives/1290)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值