最近在 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 需要使用双引号引起来。