regexp_replace не работает должным образом в beeline при извлечении файла dat - PullRequest
0 голосов
/ 07 августа 2020

при извлечении данных из 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

любая помощь будет принята с благодарностью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...