Hive查询特殊字段解决方案

版权声明:学习交流为主,未经博主同意禁止转载,禁止用于商用。 https://blog.csdn.net/u012965373/article/details/83001914

问题:

1.字段、表名是中文,表名,数据库是中文名,怎么解决?

2.字段、表名特殊的字符包括 \,  (),  $ ...,怎么解决?

3.类似于func(xxx), 这是一个字段名字,不是一个函数嵌套字段,但是在hive查询引擎的解析处理中,被解析为一个udf函数和一个字段名字,怎么解决?

解决方法:

1.基础解决方案,使用反引号例如: " `` " 

create table hehe(`来试试` string);

create table `我是一个正经的表名`(`我是一个正经的字段` int);

2.如果出现上面问题3的情况,经过研究Hive执行原理,当一个字段有一个别名,类似于

select tb_id  as id  from table_name limit 10;

其中的tb_id的别名id,那么可以判断出来前面是一个字段,然后再去元数据库中匹配这个字段是否在元数据库中。

因此问题三我们可以使用 select `func(xxx)` as b from ods.table_name limit 10 来查询数据。

猜你喜欢

转载自blog.csdn.net/u012965373/article/details/83001914