apache-spark - 我的 spark sql 限制很慢

标签 apache-spark elasticsearch apache-spark-sql spark-submit

我用spark从elasticsearch读取。喜欢

select col from index limit 10;

问题是索引非常大,它包含 1000 亿行。而 spark 生成数千个任务来完成这项工作。
我只需要 10 行,即使 1 个任务返回 10 行就可以完成工作。我不需要那么多任务。
即使是 limit 1,limit 也很慢。
验证码:

sql = select col from index limit 10
sqlExecListener.sparkSession.sql(sql).createOrReplaceTempView(tempTable)

最佳答案

source code of limit显示它将为每个分区获取第一个 limit 元素,然后它将扫描所有分区。

为了加快查询速度,您可以指定分区键的一个值。假设您使用 day 作为分区键,下面的查询会快得多

select col from index where day = '2018-07-10' limit 10;

关于apache-spark - 我的 spark sql 限制很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47565131/

相关文章:

apache-spark - 用户在使用 spark.sql 读取数据时没有 ALTERTABLE_ADDCOLS 权限

java - 将 Dataset<Row> 中的值获取到 .txt 文件中(使用 Java)

apache-spark - 在 Spark UDF 中操作数据框

docker - 在 docker compose 中更改容器端口

elasticsearch - 对Ngramm的ElasticSearch查询

hadoop - Spark : Hive Insert overwrite throws ClassNotFoundException

java - Spark 流停止

elasticsearch - 使用Hive/弹性连接器索引数据时启用压缩

date - Elasticsearch 日期范围聚合和时区

python - 将复杂的数据帧行划分为 Pyspark 中的简单行