Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-19355

Use map output statistices to improve global limit's parallelism

    Details

    • Type: Improvement
    • Status: In Progress
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: SQL
    • Labels:
      None

      Description

      A logical Limit is performed actually by two physical operations LocalLimit and GlobalLimit.

      In most of time, before GlobalLimit, we will perform a shuffle exchange to shuffle data to single partition. When the limit number is very big, we shuffle a lot of data to a single partition and significantly reduce parallelism, except for the cost of shuffling.

      This change tries to perform GlobalLimit without shuffling data to single partition. Instead, we perform the map stage of the shuffling and collect the statistics of the number of rows in each partition. Shuffled data are actually all retrieved locally without from remote executors.

      Once we get the number of output rows in each partition, we only take the required number of rows from the locally shuffled data.

        Attachments

          Activity

            People

            • Assignee:
              viirya Liang-Chi Hsieh
              Reporter:
              viirya Liang-Chi Hsieh
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated: