我在试验是否使用多个集群的星火可以改善缓慢的SQL查询。我为师父创造了两个工人,他们是在当地的星火上独立运行的。是的,我把内存和核心数量减半,以便在本地机器上创建工作人员。我为sqlContext指定了分区,使用了partitionColumn、lowerBound、UpperBound和numberPartitions,这样任务(或分区)就可以分布在工人上了。我将它们描述如下(partitionColumn是唯一的):
df = sqlContext.read.format("jdbc").options(
url = "jdbc:sqlserver://localhost;databasename=AdventureWorks2014;integratedSecurity=true;",
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver",
dbtable = query,
partitionColumn = "RowId",
lowerBound = 1,
upperBound = 10000000,
numPartitions = 4).load()在指定选项之后,我在主程序上运行了脚本,但是在没有集群的星星之火上运行时,我无法获得任何性能改进。我知道我不应该为了实验的完整性而把记忆减半。但我想知道,如果不是这样的话,情况是否可能是这样,或者有什么原因。任何想法都欢迎。非常感谢。
发布于 2017-05-28 11:33:22
这里有多个因素发挥作用,尽管每个因素的权重可能因情况而异。
Note
还不清楚什么是query,但是如果它在直接针对数据库执行时很慢,那么从Spark获取它会更慢。您可能应该首先更仔细地查看查询和/或数据库结构和配置。
https://stackoverflow.com/questions/44225732
复制相似问题