Spark 查询 运行 很慢
Spark query running very slow
我在 AWS 上有一个集群,有 2 个从节点和 1 个主节点。所有实例都是 m1.large 类型。我是 运行 spark 1.4 版。我正在对来自红移的超过 4m 数据的火花性能进行基准测试。我通过 pyspark shell
触发了一个查询
df = sqlContext.load(source="jdbc", url="connection_string", dbtable="table_name", user='user', password="pass")
df.registerTempTable('test')
d=sqlContext.sql("""
select user_id from (
select -- (i1)
sum(total),
user_id
from
(select --(i2)
avg(total) as total,
user_id
from
test
group by
order_id,
user_id) as a
group by
user_id
having sum(total) > 0
) as b
"""
)
当我执行 d.count() 时,当 df
未缓存时,上述查询需要 30 秒,当 df
缓存在内存中时,上述查询需要 17 秒。
我希望这些时间更接近 1-2 秒。
这些是我的 spark 配置:
spark.executor.memory 6154m
spark.driver.memory 3g
spark.shuffle.spill false
spark.default.parallelism 8
rest 设置为其默认值。任何人都可以看到我在这里缺少什么吗?
- 将
default.parallelism
设置为 2
- 使用
--num-executor-cores 8
启动 spark
- 修改这部分
df.registerTempTable('test')
d=sqlContext.sql("""...
到
df.registerTempTable('test')
sqlContext.cacheTable("test")
d=sqlContext.sql("""...
这很正常,除了 Spark 到 运行 在一些 milli-secondes 像 mysql 或 postgres 做。与 Hive 等其他大数据解决方案相比,Spark 具有低延迟,Impala...您无法将其与经典数据库进行比较,Spark 不是索引数据的数据库!
观看此视频:https://www.youtube.com/watch?v=8E0cVWKiuhk
他们显然把 Spark 放在这里:
您尝试过 Apache Drill 吗?我发现它快一点(我将它用于小型 HDFS JSON 文件,2/3Gb,比 Spark 用于 SQL 查询快得多)。
我在 AWS 上有一个集群,有 2 个从节点和 1 个主节点。所有实例都是 m1.large 类型。我是 运行 spark 1.4 版。我正在对来自红移的超过 4m 数据的火花性能进行基准测试。我通过 pyspark shell
触发了一个查询 df = sqlContext.load(source="jdbc", url="connection_string", dbtable="table_name", user='user', password="pass")
df.registerTempTable('test')
d=sqlContext.sql("""
select user_id from (
select -- (i1)
sum(total),
user_id
from
(select --(i2)
avg(total) as total,
user_id
from
test
group by
order_id,
user_id) as a
group by
user_id
having sum(total) > 0
) as b
"""
)
当我执行 d.count() 时,当 df
未缓存时,上述查询需要 30 秒,当 df
缓存在内存中时,上述查询需要 17 秒。
我希望这些时间更接近 1-2 秒。
这些是我的 spark 配置:
spark.executor.memory 6154m
spark.driver.memory 3g
spark.shuffle.spill false
spark.default.parallelism 8
rest 设置为其默认值。任何人都可以看到我在这里缺少什么吗?
- 将
default.parallelism
设置为 2 - 使用
--num-executor-cores 8
启动 spark
- 修改这部分
df.registerTempTable('test')
d=sqlContext.sql("""...
到
df.registerTempTable('test')
sqlContext.cacheTable("test")
d=sqlContext.sql("""...
这很正常,除了 Spark 到 运行 在一些 milli-secondes 像 mysql 或 postgres 做。与 Hive 等其他大数据解决方案相比,Spark 具有低延迟,Impala...您无法将其与经典数据库进行比较,Spark 不是索引数据的数据库!
观看此视频:https://www.youtube.com/watch?v=8E0cVWKiuhk
他们显然把 Spark 放在这里:
您尝试过 Apache Drill 吗?我发现它快一点(我将它用于小型 HDFS JSON 文件,2/3Gb,比 Spark 用于 SQL 查询快得多)。