при извлечении данных из hive
через beeline
в файл dat, я получаю несоответствие в символах поля отметки времени после применения в нем функции regexp_replace
, но тот же regexp_replace
работает при запросе вручную через beeline без записи в файл dat.
DDL:
create table table_1 g_date timestamp,last_g_date timestamp)row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile;
исходные данные в улье
select g_date,last_g_date from table_1;
+-------------------------+--------------------------+
| g_date | last_g_date |
+-------------------------++-------------------------+
| 2020-05-29 21:02:55.0 | 2020-05-29 21:02:55.0 |
+-------------------------++-------------------------+
после применения regexp_replace((g_date,'-|:|\\.0',''))
к существующим fields,
select regexp_replace((g_date,'-|:|\\.0','')) as r_g_date, (last_g_date,'-|:|\\.0','') as r_last_g_date from table_1;
+-------------------------+--------------------------+
| r_g_date | r_last_g_date |
+-------------------------++-------------------------+
| 20200529 210255 | 20200529 210255 |
+-------------------------++-------------------------+
при извлечении с помощью beeline тех же результатов в файл dat, 20,2020
символов обрезаются beeline при извлечении в файл dat.
запрос извлечения с использованием beeline,
beeline -u "${BEELINE_URL}" --hiveconf mapred.map.tasks=20 --hiveconf hive.merge.mapfiles=false --hiveconf hive.execution.engine=mr --hiveconf hive.vectorized.execution.enabled=true --hiveconf hive.vectorized.execution.reduce.enabled=true --hiveconf hive.cbo.enable=true --outputformat=dsv --delimiterForDSV=$'\u0001' --showHeader=false -e "select regexp_replace((g_date,'-|:|\\.0','')) as r_g_date, (last_g_date,'-|:|\\.0','') as r_last_g_date from table_1;" > DATA_EXTRACT
cat DATA_EXTRACT
r_g_date^Alast_g_date
0529 210255^A0529 210255
0529 210255^A0529 210255
Примечание: через улей извлечение этого файла dat работает, как ожидалось, для того же regexp_replace((g_date,'-|:|\\.0',''))
r_g_date^Alast_g_date
20200529 210255^A20200529 210255
20200529 210255^A20200529 210255
любая помощь будет принята с благодарностью