0

我们使用 python 脚本来处理数据,并使用 TRANSFORM 将它们与 hive 一起使用。我做了两张相同的桌子。首先将数据存储在 ORC 中,第二个存储在 TEXT 中。存储在 ORC 中的数据映射器的运行速度比存储在 TEXT 中的数据慢 10 倍。

1) 我们使用默认的 ORC 设置。

2) 查询:

use db1;

set hive.vectorized.execution.enabled=false;
set hive.vectorized.execution.reduce.enabled=false;
set hive.execution.engine=tez;

ADD FILE /home/user/manage.py;
ADD FILE /home/user/cluster.mod;
ADD FILE /home/user/hive_serde.so;

ALTER TABLE aggregates ADD IF NOT EXISTS PARTITION (dt='${hiveconf:HIVE_CALC_DT}');

FROM (
  FROM visits
  MAP logins, geo_id, ua, os, device, version, splits, entrance_utm,
  is_bounce_visit, is_new_visit, screen, browser, um, ts_start, ts_end,
  ruid, project_id, geo_parents, custom_vars, page_views, totals
  ROW FORMAT DELIMITED
  USING 'python2.7 manage.py metrics_from_visits'
  AS project_id, splits, message_type, message
  WHERE dt = '${hiveconf:HIVE_CALC_DT}'
  CLUSTER BY project_id, splits, message_type) map_output

INSERT OVERWRITE TABLE aggregates partition (dt='${hiveconf:HIVE_CALC_DT}')

REDUCE *
  USING 'python2.7 manage.py generate_aggregates --date ${hiveconf:HIVE_CALC_DT}'
  AS (
    table_name string COMMENT 'Aggregator type',
    key string COMMENT 'Key for Hbase',
    column_family string COMMENT 'Column family name for Hbase',
    column_name string COMMENT 'Column name for Hbase',
    data string COMMENT 'Json data from metric aggregates'
  )

ROW FORMAT DELIMITED;

任何为什么会发生这种情况的想法都会有很大帮助。

4

0 回答 0