spark学习&错误记录

1.spark-submit 出现java.lang.NoSuchMethodError:

检查spark版本支持的scala版本(用spark-shell查看)与编写工程所用的scala版本(查看build.sbt里的scalaVersion)是否兼容。


2. IDEA下用sbt构建spark项目时,若build.sbt的refresh project失败,可能是spark version 与scala version的版本部不兼容。


3. Spark集群的三种运行模式:standalone,spark on yarn,spark on meson

standalone下的一些角色:

       Master: 主控节点,接受client提交的作业,管理work,负责资源的分配

       work:standalone模式中slave上的守护进程,管理本节点资源,接收Master命令,启动driver和executer

       Driver: 一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。


      Executor:即真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task。


4.作业相关的名词解释

Stage:一个Spark作业一般包含一到多个Stage。

Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。

DAGScheduler: 实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。

TaskScheduler:实现Task分配到Executor上执行。


5. scala 连接Mysql:

a.scala:

mport java.sql.{Connection, DriverManager, ResultSet}

val url = "jdbc:mysql://localhost:3306/mysql"
  //驱动名称
  val driver = "com.mysql.jdbc.Driver"
  //用户名
  val username = "root"
  //密码
  val password = "123"
  //初始化数据连接
  var connection: Connection = _
  try {
   //注册Driver
    Class.forName(driver)
    //得到连接
    connection = DriverManager.getConnection(url, username, password)
    val statement = connection.createStatement
    //执行查询语句,并返回结果
    val rs = statement.executeQuery("SELECT host, user FROM user")
    //打印返回结果
    while (rs.next) {
      val host = rs.getString("host")
      val user = rs.getString("user")
      println("host = %s, user = %s".format(host, user))
    }
  } catch {
    case e: Exception => e.printStackTrace
  }
  //关闭连接,释放资源
  connection.close


运行:scala -cp ~Downloads/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar:. a.scala


6. 关于JDBC中No operations allowed after connection closed的问题

关闭数据库连接connection后,还用该连接执行sql操作

关于JDBC中No operations allowed after connection closed的问题 

关于JDBC中No operations allowed after connection closed的问题 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值