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

Introduce a JVM object based aggregate operator

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.2.0
    • Component/s: SQL
    • Labels:
    • Target Version/s:

      Description

      The new Tungsten execution engine has very robust memory management and speed for simple data types. It does, however, suffer from the following:

      1. For user-defined aggregates (Hive UDAFs, Dataset typed operators), it is fairly expensive to fit into the Tungsten internal format.
      2. For aggregate functions that require complex intermediate data structures, Unsafe (on raw bytes) is not a good programming abstraction due to the lack of structs.

      The idea here is to introduce a JVM object based hash aggregate operator that can support the aforementioned use cases. This operator, however, should limit its memory usage to avoid putting too much pressure on GC, e.g. falling back to sort-based aggregate as soon the number of objects exceeds a very low threshold.

      Internally at Databricks we prototyped a version of this for a customer POC and have observed substantial speed-ups over existing Spark.

        Attachments

          Activity

            People

            • Assignee:
              lian cheng Cheng Lian
              Reporter:
              rxin Reynold Xin
            • Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: