我正在尝试使用数据源MySQL的Apache spark.我有一个拥有1个主节点和1个从节点的集群,它们都有8 GB内存和2个内核我使用spark-shell将该SQL查询提交给spark,而该表有6402821这么多行.我正在那张桌子上表演一个小组.并采取时间MySQL是5.2secs使用火花当我执行查询的时间21Secs.为什么会这样?
我也设置了一些配置,如partitionColumn,upperBound,lowerBound和numofPartitions,但仍然没有变化.
我也试过使用1,2,4核执行查询,但是火花所花费的时间是21Secs.
出现这个问题是因为我的MySQL数据库是在一台机器上而且所有的火花节点都试图在这台机器上查询数据?
任何人都可以帮我解决这个问题吗?
我想要查询的数据库有一个名为demo_call_stats的表是:
val jdbcDF = spark.read.format("jdbc").options( Map("url" -> "jdbc:mysql://192.168.0.31:3306/cmanalytics?user=root&password=","zeroDateTimeBehaviour"->"convertToNull", "dbtable" -> "cmanalytics.demo_call_stats", "fetchSize" -> "10000", "partitionColumn" -> "newpartition", "lowerBound" -> "0", "upperBound" -> "4", "numPartitions" -> "4")).load()
jdbcDF.createOrReplaceTempView("call_stats")
val sqlDF = sql("select Count(*), classification_id from call_stats where campaign_id = 77 group by classification_id")
sqlDF.show()
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感谢.
谢谢