@Override public void apply(BasicStats stats) { if (stats.getNumRows() == 0 || stats.getNumRows() == -1) { stats.setNumRows(1); } } }
@Override public void apply(BasicStats stats) { if (stats.getNumRows() == 0) { stats.setNumRows(1); } } }
@Override public String toString() { return String.format("BasicStats: %d, %d %s", getNumRows(), getDataSize(), getState()); } }
public BasicStats(List<BasicStats> partStats) { partish = null; List<Long> nrIn = Lists.newArrayList(); List<Long> dsIn = Lists.newArrayList(); state = (partStats.size() == 0) ? State.COMPLETE : null; for (BasicStats ps : partStats) { nrIn.add(ps.getNumRows()); dsIn.add(ps.getDataSize()); if (state == null) { state = ps.getState(); } else { state = state.merge(ps.getState()); } } currentNumRows = StatsUtils.getSumIgnoreNegatives(nrIn); currentDataSize = StatsUtils.getSumIgnoreNegatives(dsIn); }
@Override public void apply(BasicStats stats) { // FIXME: there were different logic for part/table; merge these logics later if (stats.partish.getPartition() == null) { if (stats.getNumRows() < 0 && avgRowSize > 0) { stats.setNumRows(stats.getDataSize() / avgRowSize); } } else { if (avgRowSize > 0) { long rc = stats.getNumRows(); long s = stats.getDataSize(); if (rc <= 0 && s > 0) { rc = s / avgRowSize; stats.setNumRows(rc); } if (s <= 0 && rc > 0) { s = StatsUtils.safeMult(rc, avgRowSize); stats.setDataSize(s); } } } if (stats.getNumRows() > 0) { // FIXME: this promotion process should be removed later if (State.PARTIAL.morePreciseThan(stats.state)) { stats.state = State.PARTIAL; } } } }
for (Partish pi : inputs) { BasicStats bStats = new BasicStats(pi); long nr = bStats.getNumRows(); return aggregateStat.getNumRows();
long nr = basicStats.getNumRows(); List<ColStatistics> colStats = Lists.newArrayList(); rowCounts.add(basicStats.getNumRows()); long nr = bbs.getNumRows(); long ds = bbs.getDataSize();
@Test public void mergeWithEmpty() { HiveConf conf = new HiveConf(); int avgRowSize = 100; int r0 = 13; int r1 = 15; int deserFactor = (int) conf.getFloatVar(ConfVars.HIVE_STATS_DESERIALIZATION_FACTOR); Partish p0 = new LocalPartishBuilder().numRows(r0).rawDataSize(avgRowSize * r0).buildPartition(); Partish p1 = new LocalPartishBuilder().totalSize(r1 * avgRowSize / deserFactor).buildPartition(); BasicStats.Factory factory = new BasicStats.Factory(new BasicStats.DataSizeEstimator(conf), new BasicStats.RowNumEstimator(avgRowSize)); BasicStats bs0 = factory.build(p0); BasicStats bs1 = factory.build(p1); BasicStats res = BasicStats.buildFrom(Lists.newArrayList(bs0, bs1)); assertEquals(r0 + r1, res.getNumRows()); assertEquals(avgRowSize * (r0 + r1), res.getDataSize()); }