2016-09-16 9 views
0

MYSQLサーバからJDBCを介して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

関連する問題