scala遇到的问题解决,spark分组统计

目录

前言:

环境: 

工具介绍:

Scala:

Spark:

遇到的问题:

问题一:

问题二:

一些spark在Scala中的代码实现:

一、计算前一天, 血量低于20, 不同阵营 。的数据数量

二、统计不同阵营获得金元宝的数量

三、统计各个阵营胜负的人数 

感想:

小组后续补充:


前言:

今天在敲spark Scala 的代码遇到了一些问题,分享给大家,希望也能解决到你们的问题

环境: 

IntelliJ IDEA 2023.2.2

jdk 1.8

scala 2.11.12

scala sdk 2.11.6

工具介绍:

Scala:

Scala 是 Scalable Language 的简写,是一门多范式的编程语言,也是一种函数式语言,其函数也能当成值来使用,Scala目前最新大版本是2.13,考虑后续与Spark的兼容性和稳定性等问题,实际安装2.11或2.12更为合适。Scala语言是Java补充并且比Java更加的简洁,Java的很多机制都是向Scala借鉴的,在未来越来越多Java开发者会拥抱Scala,Java和Scala混合编程开发会是Java开发者的最佳选择。

Spark:

Spark是一种快速、通用、可扩展的大数据分析引擎,它是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。它有助于在Hadoop集群中运行应用程序,内存速度最高可提高100倍,而在磁盘上运行时则可提高10倍。这可以通过减少对磁盘的读/写操作次数来实现。提供JavaScalaPython内置的API。还支持SQL查询流数据机器学习(ML)和图算法

遇到的问题:

问题一:

scala Generated source files should not be edited. The changes will be lost when sources are regenerated. (不应编辑生成的源文件。在重新生成源时,更改将丢失)

对此:网上有不同的想法https://www.dvy.com.cn/2022/06/03/7672.html,但是我用不了,现,解决一下我的方法。

首先 : 重新下一个sdk,要 2.11.xx 的,已经 有的跳过

然后:  重新开一个项目,就可以解决了。

原因:  idea卡了

试一下

object text{
  def main(args: Array[String]): Unit = {
    var x = ""
    var i = 0
    for (i <- 1 to 10){
      x += i
    }
    println(x)
  }
}

结果:

没有问题, 就算是,真的在运行中改代码也没有问题

问题二:

idea无法创建Scala类的问题

idea无法新建scala类解决办法_idea无法创建scala类-CSDN博客

这个问题:我跟绝上面的博客直接电脑重启就解决了

一些spark在Scala中的代码实现:

具体的数据信息请看火柴人数据分析-CSDN博客

一、计算前一天, 血量低于20, 不同阵营 。的数据数量

object task5{
  def main(args: Array[String]): Unit = {
    var ss = SparkSession.builder().master("local").appName("task5")
      .config("spark.driver.host", "localhost")
      .getOrCreate()
    var df = ss.read.json("E:\\spark\\can_data\\*")

    // 获取当前日期
    var date = new LocalDate()
    // 获取前一天日期
    var date1 = date.minusDays(1).toString()
    // 获取前一天的数据
    var df1 = df.filter(x => x.get(1).toString.split(" ").apply(0) == date1)
    //  获取血量低于20的数据
    var df2 = df1.filter(l => fun(Integer.valueOf(l.get(0).toString)))
    // 分组求数量
    var df3 = df2.groupBy("occupation").count()
    df3.show()
  }
  def fun(x: Integer): Boolean = {
    return x < 20;
  }
}

结果如下

二、统计不同阵营获得金元宝的数量

object task4{
  def main(args: Array[String]): Unit = {
    var ss = SparkSession.builder().master("local").appName("task4")
      .config("spark.driver.host", "localhost")
      .getOrCreate()
    var df = ss.read.json("E:\\spark\\can_data\\2023-11-17")
    // 通过 occupation 分组统计得知 哪一个职业的受益比较高
    var cnt = df.groupBy("occupation").sum("money")
    cnt.show()
  }
}

结果如下:

三、统计各个阵营胜负的人数 

object task3{
  def main(args: Array[String]): Unit = {
    var ss = SparkSession.builder().master("local").appName("task")
      .config("spark.driver.host", "localhost")
      .getOrCreate()
    var df = ss.read.json("E:\\spark\\can_data\\2023-11-17")
    // 同时根据 "department" 和 "win" 分组
    var cou = df.groupBy("department", "win").count()
    df.show()
  }
}

结果如下

感想:

某位名人曾经说过,代码界遇到的问题80%都可以通过重启解决,剩下的20%不用解决,这世界本来就不是完美的。对此,我只能承认前半句,因为,代码逻辑性太强了,一个地方出bug其他地方也会停止,所以后面的20%就是我们真正需要解决的问题,csdn就是解决这些问题的对吧。

小组后续补充:

https://blog.csdn.net/really_good_girl/article/details/134538739

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值