从中提取数据时 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
任何帮助都将不胜感激
暂无答案!
目前还没有任何答案,快来回答吧!