Spark查询运行速度很慢

Arp*_*pit 11 apache-spark apache-spark-sql pyspark

我在AWS上有一个集群,有2个从属和1个主服务器.所有实例都是m1.large类型.我正在运行Spark 1.4版本.我正在对来自红移的4米数据的火花性能进行基准测试.我通过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
"""
)
Run Code Online (Sandbox Code Playgroud)

当我执行d.count()时,上面的查询在df未缓存时需要30秒,df在内存中缓存时需要17秒.

我期待这些时间接近1-2秒.

这些是我的火花配置:

spark.executor.memory 6154m
spark.driver.memory 3g
spark.shuffle.spill false
spark.default.parallelism 8
Run Code Online (Sandbox Code Playgroud)

rest设置为默认值.任何人都能看到我在这里失踪的东西吗?

Tho*_*aux 4

这是正常的,除了 Spark 会像 mysql 或 postgres 那样在几毫秒内运行。与 Hive、Impala 等其他大数据解决方案相比,Spark 的延迟较低……您无法将它与经典数据库进行比较,Spark 不是一个对数据进行索引的数据库!

观看此视频:https://www.youtube.com/watch?v =8E0cVWKiuhk

他们明确地将 Spark 放在这里:

Spark延迟不是那么低

您尝试过 Apache Drill 吗?我发现它更快一点(我将它用于小型 HDFS JSON 文件,2/3Gb,比用于 SQL 查询的 Spark 快得多)。