Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-6442

Adjust Hbase disk cost & row count estimation when filter push down is applied

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.13.0
    • Fix Version/s: 1.14.0
    • Component/s: None
    • Labels:

      Description

      Disk cost for Hbase scan is calculated based on scan size in bytes.

      float diskCost = scanSizeInBytes * ((columns == null || columns.isEmpty()) ? 1 : columns.size() / statsCalculator.getColsPerRow());
      

      Scan size is bytes is estimated using TableStatsCalculator with the help of sampling.
      When we estimate size for the first time (before applying filter push down), for sampling we use random rows. When estimating rows after filter push down, for sampling we use rows that qualify filter condition. It can happen that average row size can be higher after filter push down
      than before. Unfortunately since disk cost depends on these calculations, plan with filter push down can give higher cost then without it.

      Possible enhancements:
      1. Currently default row count is 1 million but if during sampling we return less rows then expected, it means that our query will return not more rows then this number. We can use this number instead of default row count to achieve better cost estimations.
      2. When filter push down was applied, row number was reduced by half in order to ensure plan with filter push down will have less cost. Then same should be done for disk cost as well.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                arina Arina Ielchiieva
                Reporter:
                arina Arina Ielchiieva
                Reviewer:
                Volodymyr Vysotskyi
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: