apache-spark - Spark查询运行很慢

标签 apache-spark apache-spark-sql pyspark

我在 AWS 上有一个集群,有 2 个从站和 1 个主站。所有实例都是 m1.large 类型。我正在运行 Spark 1.4 版。我正在对来自红移的超过 400 万数据的 Spark 性能进行基准测试。我通过 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 设置为其默认值。任何人都可以看到我在这里缺少什么吗?

最佳答案

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

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

他们清楚地把 Spark 放在这里:

Spark not so low latency

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

关于apache-spark - Spark查询运行很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31693723/

相关文章:

sql - 如何在 Hive 中分解数组并创建 View ?

scala - 在 Spark 数据集上使用 groupByKey 中的最小/最大操作

scala - 生成用于查找的单行数据框

apache-spark - 如何在 PySpark 的 Pandas 中使用 iloc 获得相同的结果?

apache-spark - java.lang.UnsupportedOperationException : Schema for type MyClass is not supported

apache-spark - 在数组内的 Spark SQL 中查询

docker - 如何在SparkConf中初始化一个master以便在k8s集群上运行分布式?

hadoop - 轻松将 Elasticsearch 数据导入 HDFS

python - "normalize"将句子的数据帧转换为更大的单词数据帧

python - Pyspark:将具有嵌套结构的数组转换为字符串