JdbcRDD错误:部分获取的连接建立数据

时间:2017-07-16 11:03:43

标签: java mysql scala apache-spark

我尝试连接到mysql数据库,以获取表记录。我可以建立连接,也可以获取10条记录,但突然代码崩溃了。我不知道为什么。 PS:我是斯卡拉的新手...任何帮助都将不胜感激。

object jdbcConnect {
 def main(args: Array[String]) {

  val url="jdbc:mysql://127.0.0.1:3306/mydb" 
   val username = "root"
       val password = "token_password"
       Class.forName("com.mysql.jdbc.Driver").newInstance


       //DriverManager.registerDriver(new com.mysql.jdbc.Driver());

       val conf = new SparkConf().setAppName("JDBC RDD").setMaster("local[2]").set("spark.executor.memory", "1g")
       val sc = new SparkContext(conf)

       val myRDD = new JdbcRDD( sc, () => DriverManager.getConnection(url,username,password) ,
      "select s_Id,issue_date from store_details limit ?, ?",
      0, 10, 1, r => r.getString("s_Id") + ", " + r.getString("issue_date"))

       myRDD.foreach(println)
       myRDD.saveAsTextFile("C:/jdbcrddexamplee")

  }
}
  

ERROR      17/07/16 02:32:24错误执行者:阶段1.0(TID 1)中任务0.0的异常       ExitCodeException exitCode = 1:ChangeFileModeByMask error(5):拒绝访问。在org.apache.hadoop.util.Shell.runCommand(Shell.java:582)           在org.apache.hadoop.util.Shell.run(Shell.java:479)           在org.apache.hadoop.util.Shell $ ShellCommandExecutor.execute(Shell.java:773)           在org.apache.hadoop.util.Shell.execCommand(Shell.java:866)           在org.apache.hadoop.util.Shell.execCommand(Shell.java:849)           在org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:733)           在org.apache.hadoop.fs.RawLocalFileSystem $ LocalFSFileOutputStream。(RawLocalFileSystem.java:225)           at org.apache.hadoop.fs.RawLocalFileSystem $ LocalFSFileOutputStream。(RawLocalFileSystem.java:209)           at org.apache.hadoop.fs.RawLocalFileSystem.createOutputStreamWithMode(RawLocalFileSystem.java:307)           在org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:296)           在org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:328)           在org.apache.hadoop.fs.ChecksumFileSystem $ ChecksumFSOutputSummer。(ChecksumFileSystem.java:398)           在org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:461)           在org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:440)           在org.apache.hadoop.fs.FileSystem.create(FileSystem.java:911)           在org.apache.hadoop.fs.FileSystem.create(FileSystem.java:804)

1 个答案:

答案 0 :(得分:0)

这似乎是一个许可错误。 我的愚蠢......

确保以管理员身份运行任何内容。 虽然我建议使用数据帧而不是RDD:D

谢谢