spark2.2 DataFrame的一些算子操作

这篇博客详细介绍了Spark DataFrame的创建和各种操作,包括从多种数据源读写数据,如MySQL、SQLServer、MongoDB和ES。此外,还涵盖了DataFrame的Action操作,如数据展示、获取数据到数组和List、统计信息等。进一步讨论了条件查询和join操作,包括where、query、limit、order by、group by、distinct等,并举例展示了实际应用。
摘要由CSDN通过智能技术生成

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)</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值