Spark Session中的DataFrame类似于一张关系型数据表。在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现。
可以参考,Scala提供的DataFrame API。本文将使用SparkSession进行操作。
一、DataFrame对象的生成
val ss = SparkSession.builder()
.appName("ta")
.master("local[4]")
.config("spark.mongodb.input.uri","mongodb://username:password@192.168.1.3:27017/log.")
.config("spark.mongodb.output.uri","mongodb://username:password@192.168.1.3:27017/log")
.config("es.index.auto.create", "true")
.config("es.nodes","192.168.1.1")
.config("es.port","9200")
.getOrCreate()
1.读写mysql数据
val url = "jdbc:mysql://m000:3306/test"
val jdbcDF = ss.read.format( "jdbc" ).options(Map( "url" -> url,"user" -> "xxx","password" -> "xxx", "dbtable" -> "xxx" )).load()
data2DF.write.mode("overwrite").format("jdbc").options(Map("url" ->url, "dbtable" -> "TableName")).save()
2.读写SqlServer数据
val sqlUrl="jdbc:sqlserver://192.168.1.3:1433;DatabaseName=mytable;username=xxxx;password=xxx"
val data2DF = ss.read.format("jdbc").options( Map("url" -> sqlsUrl, "dbtable" -> "TableName")).load()
data2DF.write.mode("overwrite").format("jdbc").options(Map("url" ->sqlUrl, "dbtable" -> "TableName")).save()
3.读写MongoDB数据
import com.mongodb.spark._
import com.mongodb.spark.config.ReadConfig
读取
val data1DF = MongoSpark.load(ss, ReadConfig(Map("collection" -> "TableName"), Some(ReadConfig(ss))))
val data2=ss.sparkContext.loadFromMongoDB(ReadConfig(Map("uri" -> readUrl))).toDF()
第一种方式适用于读取同一个库中的数据,当在不同库中读取数据时,可以使用第二种
MongoSpark.save(datas.write.option("collection", "documentName").mode("append"))
4.读写ES数据
import org.elasticsearch.spark.sql._
ss.esDF("/spark_applog/applog")
df.saveToEs("/spark_applog/applog")
二、DataFrame对象上Action操作
1、show
:展示数据
以表格的形式在输出中展示jdbcDF
中的数据,类似于select * from spark_sql_test
的功能。
show
方法有四种调用方式,分别为,
(1)show
只显示前20条记录。且过长的字符串会被截取
示例:jdbcDF.show
(2)show(numRows: Int)
显示numRows
条
示例:jdbcDF.show(3)
(3)show(truncate: Boolean)
是否截取20个字符,默认为true
。
示例:jdbcDF.show(false)
(4)show(numRows: Int, truncate: Int)
显示记录条数,以及截取字符个数,为0时表示不截取
示例:jdbcDF.show(3, 0)</