2016-09-16 225 views
0

我正在通过JDBC将数据从MYSQL服务器加载到Spark,但是我需要在加载数据后关闭该连接。关闭连接的确切语法是什么?关闭Spark中的MYSQL JDBC连接

df_mysql = sqlContext.read.format("jdbc").options(
    url="jdbc:mysql://***/****”, 
    driver="com.mysql.jdbc.Driver", 
    dbtable="((SELECT jobid, system, FROM Jobs LIMIT 500) as T)", 
    user=“*****”, 
    password=“*****”).load() 

我试过dbtable.close()。那不起作用。

回答

3

这里真的没有什么可以关闭的。 DateFrame对象不是JDBC连接,并且load确实不是load数据。它只是获取构建DataFrame所需的元数据。

实际数据处理仅在您执行包含取决于此特定输入的任务的作业时才会发生并由相应的执行程序处理。负责管理连接和提取数据,并且这个过程不会暴露给用户。

+0

这是否意味着我需要保持连接,直到我处理数据?如何在spark中创建df之后以及在进行昂贵的计算之前关闭连接? – user3311147

+0

你没有。这是,或者至少应该由输入格式来处理。由于Spark不会热切加载数据并以流媒体方式处理记录,因此您可以看到相对较长的连接。而且,如果没有缓存,数据可能会被多次读取,缓存本身比普通RDD复杂得多。 – zero323

+0

当我在脚本中添加耗时的进程时,我一直在收到MYSQL连接超时错误。当脚本仅用于加载并在数据上执行一些简单任务时,它并不存在。这就是为什么我想在创建数据框后关闭连接的原因。 – user3311147