我想在eclipse中使用Scala spark来从MySQL数据库中获取数据。 问题是代码需要数小时才能执行一个SQL查询。 这是我最初的代码:如何在Spark Spark中快速执行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)
但是这并没有解决我的问题。最后只想说我的行为表包含大约1100万行。
任何想法?
在action.session_id和session.session_id上添加索引并让我们知道性能是否提高。 – radumanolescu
什么是你想要执行的确切查询? –
你应该在你的问题中包含'action'和'session'表的模式。了解他们的数据结构和现有索引将有助于他人确定优化领域。 –