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

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments


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


      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.




            • Assignee:
              arina Arina Ielchiieva
              arina Arina Ielchiieva
              Vova Vysotskyi


              • Created:

                Issue deployment