@Override
    public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx,
                          Object... nodeOutputs) throws SemanticException {
      AnnotateStatsProcCtx aspCtx = (AnnotateStatsProcCtx) procCtx;
      UDTFOperator uop = (UDTFOperator) nd;

      Operator<? extends OperatorDesc> parent = uop.getParentOperators().get(0);

      Statistics parentStats = parent.getStatistics();

      if (parentStats != null) {
        Statistics st = parentStats.clone();

        float udtfFactor = HiveConf.getFloatVar(aspCtx.getConf(), HiveConf.ConfVars.HIVE_STATS_UDTF_FACTOR);
        long numRows = Math.max(StatsUtils.safeMult(parentStats.getNumRows(), udtfFactor), 1);
        long dataSize = StatsUtils.safeMult(parentStats.getDataSize(), udtfFactor);
        st.setNumRows(numRows);
        st.setDataSize(dataSize);

        List<ColStatistics> colStatsList = st.getColumnStats();
        if(colStatsList != null) {
          StatsUtils.scaleColStatistics(colStatsList, udtfFactor);
          st.setColumnStats(colStatsList);
        }

        if (LOG.isDebugEnabled()) {
          LOG.debug("[0] STATS-" + uop.toString() + ": " + st.extendedToString());
        }

        uop.setStatistics(applyRuntimeStats(aspCtx.getParseContext().getContext(), st, uop));
      }
      return null;
    }
UDTF operator changes the number of rows and thereby the data size.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java