zoukankan      html  css  js  c++  java
  • 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 需要使用双引号引起来。

  • 相关阅读:
    python条件判断之直接加数字
    pythontip题目解答
    twitter api取出的日期格式化
    MySQL Archive存储引擎
    Python Json序列化
    Python 装饰器
    Python 匿名函数
    Python 函数
    Python 字符编码
    Python 文件操作
  • 原文地址:https://www.cnblogs.com/piperck/p/11053200.html
Copyright © 2011-2022 走看看