HIVE 乱码以及 HUE SQL 语句兼容性的记录(遇到应该会一直更新)

最近在 HUE 里面查询有中文字段相关的东西被报错警告。。。

(1366, Incorrect string value: \\xE4\\xBA\\xAC\\xE4\\xB8\\x9C... for column search at row 1)

 

通过调整 HUE 使用的某些元数据表的表编码来解决这个问题:

ALTER TABLE desktop_document2 modify column name varchar(255) CHARACTER SET utf8;
ALTER TABLE desktop_document2 modify column description longtext CHARACTER SET utf8;
ALTER TABLE desktop_document2 modify column search longtext CHARACTER SET utf8;

alter table beeswax_queryhistory modify `query` longtext CHARACTER SET utf8 COLLATE utf8_general_ci  NOT NULL;

 

在书写在 MySQL 中能使用的语句的时候还遇到一些无法直接在 hive 或者 presto 中运行的兼容性问题。

例如:


presto 可以运行的版本


-- 三人团奖学金表1 select '200元奖学金' AS "卡券类型", '线上H5' AS "渠道", 9000 AS "总发放数量", count(*) AS "总领取数", count(*)/9000 AS "总领取率", count(*) AS "总有效使用率" from course.user_taste t1 join analytics_db.hd_new_user_info t2 on t1.taste_type=6 and t1.quota=1 and t1.status=1 and t1.user_id = t2.user_id

 

hive 可以运行个的版本

-- 三人团奖学金表1
select 
    '200元奖学金' AS `卡券类型`,
    '线上H5' AS `渠道`,
    9000 AS `总发放数量`,
    count(*) AS `总领取数`,
    count(*)/9000 AS `总领取率`,
    count(*) AS `总有效使用率`
from course.user_taste t1
join 
    analytics_db.hd_new_user_info t2 
on 
    t1.taste_type=6 
    and t1.quota=1 
    and t1.status=1 
    and t1.user_id = t2.user_id

MySQL 以上两个版本都可以运行,不得不佩服 MySQL 对 SQL 的语句兼容性和包容性真的非常好。

为了让 hive 和 presto 兼容得比较好,字符串最好都用 单引号引起来这个都没问题,as xxx 后面 hive 需要使用 ` ` 引起来。而  presto 需要使用双引号引起来。

 

posted @ 2019-06-19 18:38  piperck  阅读(1065)  评论(0编辑  收藏  举报