2017-07-16 58 views
1

我试图连接到mysql数据库,以获取表记录。我可以建立连接,并且10条记录也被提取,但是随后突然代码崩溃。我不知道为什么。 PS:我是新来的斯卡拉......任何帮助将不胜感激。JdbcRDD错误:连接建立的数据部分获取

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 2时32分24秒ERROR执行人:异常在任务0.0在阶段1.0(TID 1) ExitCodeException EXITCODE = 1:ChangeFileModeByMask误差(5):访问被拒绝。 at org.apache.hadoop.util.Shell.runCommand(Shell.java:582) at org.apache.hadoop.util.Shell.run(Shell.java:479) at org.apache.hadoop.util.Shell $ ShellCommandExecutor.execute(Shell.java:773) at org.apache.hadoop.util.Shell.execCommand(Shell.java:866) at 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) 在org.apache.hadoop。 fs.RawLocalFileSystem $ LocalFSFileOutputStream。(RawLocalFileSystem.java:209) at org.apache.hadoop.fs.RawLocalFileSystem.createOutputStreamWithMode(RawLocalFileSystem.java:307) at org。 apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:296) at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:328) at 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) .apache.hadoop.fs.FileSystem.create(FileSystem.java:911) 在org.apache.hadoop.fs.FileSystem.create(FileSystem.java:804)

+2

你有权限创建在C目录中的文件?改用我的文档。 – Tom

+0

@Tom是啊我想事实上该文件夹确实创建了 –

+0

改变了路径。但是,没有记录sucessFew被取出,然后错误 6,1993年8月26日 7,2002年10月20日 8,2006-09-23 9,2008-05-01 10,2012年10月3日 17/07/17 00:16:11信息执行程序:阶段0.0中的完成任务0.0(TID 0)。 998字节的结果发送给驱动程序 17/07/17 00:16:11 INFO TaskSetManager:阶段0.0(TID 0)在本地主机(执行程序驱动程序)550毫秒完成的任务0.0(1/1) 17/07/17 00:16:11 INFO TaskSchedulerImpl:从池中删除任务集0.0,其任务已完成,从池 17/07/17 00:16:11信息DAGScheduler:ResultStage 0(在jdbcConnect.scala的foreach:34)在0.570秒内完成 –

回答

0

这似乎是一个权限错误。 我的愚蠢...

请确保以管理员身份运行任何内容。 虽然我会建议使用数据框代替RDD:d

感谢