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的问题