我们使用 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;
任何为什么会发生这种情况的想法都会有很大帮助。