常安.207 2024-05-23 11:38 采纳率: 0%
浏览 4

Scala的错误代码如下 有点奇怪

为什么插上电源适配器之后代码运行不了?这么神奇?
这是没插电的时候!

img

这是插电的时候!

img


哪位大伸看看有什么问题

代码如下

package L02

import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.sql.functions._

case class P2(selling_price:Double,bedrooms_num:Double,bathroom_num:Double,housing_area:Double,
              parking_area:Double,floor_num:Double,housing_rating:Double,built_area:Double,basement_area:Double,
              year_built:String,year_repair:String,latitude:Double,longitude:Double,sale_data:String)
object L001 {
  def main(args: Array[String]): Unit = {
//    val spark = new SparkConf().setMaster("local[*]").setAppName("test")
//    val sc = new SparkContext(spark)
    val spark = SparkSession.builder()
      .master("local[*]")
      .appName("test")
      .getOrCreate()
    val sc = spark.sparkContext
    import spark.implicits._
    val path = "src/main/scala/L02/house.csv"
    val rdd = sc.textFile(path, 1)
    rdd.collect().foreach(println)
    val df = rdd.map(
      x => {
        var y = x.split(",")
        P2(y(0).toDouble, y(1).toDouble, y(2).toDouble, y(3).toDouble, y(4).toDouble, y(5).toDouble,
          y(6).toDouble, y(7).toDouble, y(8).toDouble, y(9), y(10), y(11).toDouble, y(12).toDouble, y(13))
      }
    ).toDF()
    df.show(5)

    def null_count(data: DataFrame, columnName: String) = {
      println(columnName + ":缺失值数量" + (data.count() - data.na.drop().count()))
    }

    //    定义一个函数区求各列的最大值,最小值,平均值
    def mmas(data: DataFrame, columnName: String) = {
      println(columnName + ":")
      data.selectExpr("max(" + columnName + ") as max").foreach(x => println("max:" + x.toString()))
      data.selectExpr("min(" + columnName + ") as min").foreach(x => println("min:" + x.toString()))
      data.selectExpr("mean(" + columnName + ") as mean").foreach(x => println("mean:" + x.toString()))
      data.selectExpr("stddev(" + columnName + ") as stddev").foreach(x => println("stddev:" + x.toString()))
      null_count(data, "selling_price")
      println("*" * 30)
    }

    val dataColumnName = df.columns.toList
    for (i <- dataColumnName) {
      if (i == "year_built" || i == "year_repair" || i == "sale_data") {
        println(i + ":")
        null_count(df, i)
        println("-" * 20)
      } else {
        mmas(df, i)
      }
    }
    null_count(df, "selling_price")
    mmas(df, "selling_price")


    val houseDate = df.na.drop().withColumn("date", to_date(col("sale_data"), "yyyyMMdd"))
    val houseQuarter = houseDate.withColumn("quarter", quarter(col("date")))
    //    对各季度房屋销售额的统计分析
    houseQuarter.groupBy("quarter").sum("selling_price").sort("quarter").show()
    //    对各季度房屋评分的统计分析
    houseQuarter.groupBy("housing_rating").count().sort(desc("count")).show()
    houseQuarter.groupBy("housing_rating").agg(avg(col("selling_price") / col("housing_area"))).sort("housing_rating").show()

  }
}


  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-23 11:38
    关注

    引自免费微信小程序:皆我百晓生

    从你提供的信息来看,你在运行Scala代码时遇到了问题,这个问题与是否插入电源适配器无关,而是与Spark环境配置有关。在插电的情况下,你看到了一个NullPointerException和一个SparkException

    错误信息显示问题出在Spark Shuffle Block Pusher类的初始化阶段,以及Spark Heartbeat Receiver的连接问题。这通常意味着Spark的网络通信组件可能存在问题,或者是由于内存不足导致的问题。

    首先,让我们检查一下你的Spark配置。在你的代码中,你已经设置了本地模式(local[*]),这意味着所有的Spark作业都会在一个进程中执行,且尽可能多地使用可用的核心数。如果你的系统资源有限,特别是内存,那么可能会因为内存不足而导致上述错误。

    解决方法:

    1. 确保你的Spark程序有足够的内存来运行。尝试减少数据集大小,或者增加系统的物理内存。

    2. 检查你的Spark配置文件(通常是conf/spark-defaults.conf)是否有任何可能导致问题的设置。确保没有限制了Executor的内存或其他重要参数。

    3. 尝试使用更少的executor核心数,例如local[2]local[4],看看是否能解决问题。

    4. 如果你是在IDEA或者其他集成开发环境中运行,确保你的IDE没有限制JVM的内存分配。你可以在IDE的运行配置中调整JVM选项,比如添加 -Xmx4g 来分配4GB的堆内存给你的应用。

    5. 如果你仍然遇到问题,尝试更新你的Spark版本到最新稳定版,有时候老版本可能存在bug。

    下面是一个修改后的代码片段,包含了上述建议中的部分更改:

    import org.apache.spark.sql.functions._
    import org.apache.spark.sql.types._
    
    // ...其他导入...
    
    val sparkConf = new SparkConf()
      .setMaster("local[2]") // 使用较少的核心数
      .setAppName("test")
    
    val spark = SparkSession.builder()
      .config(sparkConf)
      .getOrCreate()
    
    // ...其他代码...
    

    请按照这些步骤尝试解决问题,如果还有问题,请提供更多的日志信息以便进一步诊断。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月23日

悬赏问题

  • ¥15 matlab支持向量机使用错误
  • ¥99 利用C/C++语言,使用TCP/IP协议,编一个简易聊天程序
  • ¥15 如何使用python 实现对串口/dev/ttyUSB0进行上锁,使得该串口只能在一个python脚本中使用,其他脚本不能操作这个串口
  • ¥15 晶体塑性有限元——Damask求解
  • ¥30 设计一个图形用户界面来控制你机械臂的运动
  • ¥30 3d打印机无法识别到SD卡,如何解决?(相关搜索:格式化)
  • ¥15 前端返回pdf时不显示内容
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图