regexp\u replace在beeline中未按预期工作

ffvjumwh  于 2021-06-24  发布在  Hive
关注(0)|答案(0)|浏览(333)

从中提取数据时 hive 通过 beeline 在dat文件中,我得到了应用后时间戳字段字符的差异 regexp_replace 它的功能是一样的 regexp_replace 在通过直线手动查询而不写入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','')) 到现有字段,

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          |
+-------------------------++-------------------------+

当用直线将相同的结果提取到dat文件中时, 20,2020 提取到dat文件时,字符被直线修剪。
使用直线提取查询,

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

任何帮助都将不胜感激

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题