Demo 测试代码 WriteDataToMysql
package cn.demo.sql
import java.util.Properties
import org.apache.spark.sql.types.{StringType, StructField, StructType}
import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.{SparkConf, SparkContext}
object WriteDataToMysql {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("WriteDataToMysql").setMaster("local")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
//通过并行化创建RDD
val urlRDD = sc.parallelize(Array("http://www.baidu.com 2", "http://www.alibaba.com 3")).map(_.split(" "))
//通过StructType直接指定每个字段的schema
val schema = StructType(
List(
StructField("url", StringType, true),
StructField("content", StringType, true)
)
)
//将RDD映射到rowRDD
val rowRDD = urlRDD.map(p => Row(p(0).trim, p(1).trim))
//将schema信息应用到rowRDD上
val personDataFrame = sqlContext.createDataFrame(rowRDD, schema)
//创建Properties存储数据库相关属性
val prop = new Properties()
prop.put("user", "root")
prop.put("password", "123")
//将数据追加到数据库
personDataFrame.write.mode("append").jdbc("jdbc:mysql://192.168.2.181:3306/urldb", "urldb.url_rule", prop)
//停止SparkContext
sc.stop()
}
}
结果


本文介绍了一种使用Apache Spark SQL将数据写入MySQL数据库的方法。通过创建SparkConf配置、初始化SparkContext和SQLContext,利用parallelize方法创建RDD,并定义Schema来指定字段类型。接着,将RDD转换为DataFrame,最后通过jdbc方法将数据追加到MySQL中。

被折叠的 条评论
为什么被折叠?



