MySQLデータベースからデータを取得するために、Eclipse内でScala sparkを使用しようとしています。 問題は、コードが1つのSQLクエリを実行するのに数時間かかることです。 これは私の最初のコードです:spark scalaでmysqlクエリを高速に実行する方法
val conf = new SparkConf().setAppName("MyApp").setMaster("local")
val sc = new SparkContext(conf)
val sqlcontext = new org.apache.spark.sql.SQLContext(sc)
sqlcontext.setConf("url", "mysql://localhost:3306/myDB?user=us&password=pw")
val action = sqlcontext.jdbc(jdbcUrl, "action").registerTempTable("action")
val session = sqlcontext.jdbc(jdbcUrl, "session").registerTempTable("session")
sqlcontext.cacheTable("action")
sqlcontext.cacheTable("session")
は、その後、私は多くのコマンド
をしようとしたデータベースからデータを取得するために、これが行われるために多くの時間を要するので、私はテーブルを取得するジュストを試してみました:
val df = sqlcontext.table("action").collect()
println(df.size)
しかし、これは私の問題を解決しませんでした。最後に、私のアクションテーブルには約11百万行が含まれていると言います。
action.session_idとsession.session_idにインデックスを追加して、パフォーマンスが向上するかどうかをお知らせください。 – radumanolescu
実行しようとしている正確なクエリは何ですか? –
あなたの質問に 'action'と' session'テーブルの両方のスキーマを含めるべきです。彼らのデータ構造と既存のインデックスを知ることは、他の人が最適化のための領域を特定するのに役立ちます。 –