spark sql结果写mysql以及隐式转化的简单使用

来源:互联网 发布:yum remove nodejs 编辑:程序博客网 时间:2024/05/16 14:52

spark sql写mysql

这里可以用隐式转化,结合foldLeft,将scala中的map转化为java中的Properties

    implicit def map2Prop(map: Map[String, String]): Properties = map.foldLeft(new Properties) {      case (prop, kv) ⇒ prop.put(kv._1, kv._2); prop    }

这样就完成了Map到Properties的转化,免得我们将每个参数分别put,还是很好用的

表结构

df.printSchema

结果:

root |-- id_1: integer (nullable = true) |-- id_2: integer (nullable = true)

数据源:

id_1,id_237291,5311339086,4761470031,7023784795,9743936950,42116

最终代码

    val conf = new SparkConf().setMaster("local[*]").setAppName("csv")    val sc = new SparkContext(conf)    sc.setLogLevel("ERROR")    val sqlContext = new SQLContext(sc)     implicit def map2Prop(map: Map[String, String]): Properties = map.foldLeft(new Properties) {      case (prop, kv) ⇒ prop.put(kv._1, kv._2); prop    }    sqlContext.read.format("com.databricks.spark.csv")      .option("header", "true")      .option("inferSchema", "true")      .load("newid.csv").write.mode("append").jdbc("jdbc:mysql://localhost:3306/test", "mytest", Map("user""root", "password""1234"))

其中write的mode有好几个级别,放在下一个源码分析中写

RDBMS

然后我们查看数据库:

select * from test.mytest;

结果:

id_1 id_2 37291 53113 84795 97439 39086 47614 36950 42116 70031 70237

再次查看表结构:

desc mytest;

结果:

Field Type Null Key Default Extra id_1 int(11) YES NULL id_2 int(11) YES NULL

my github

0 0
原创粉丝点击