zoukankan      html  css  js  c++  java
  • spark集成hive遭遇mysql check失败的问题

    问题:
    spark集成hive,启动spark-shell或者spark-sql的时候,报错:

    INFO MetaStoreDirectSql: MySQL check failed, assuming we are not on mysql: 
    Lexical error at line 1, column 5.  Encountered: "@" (64), after : "".

    环境:
    spark-1.4
    hive-1.2.1
    mysql-5.1
    jdbc驱动

    原因:
    查看hive的源码MetaStoreDirectSql的构造方法:

      public MetaStoreDirectSql(PersistenceManager pm) {
        this.pm = pm;
        Transaction tx = pm.currentTransaction();
        tx.begin();
        boolean isMySql = false;
        try {
          trySetAnsiQuotesForMysql();
          isMySql = true;
        } catch (SQLException sqlEx) {
          LOG.info("MySQL check failed, assuming we are not on mysql: " + sqlEx.getMessage());
          tx.rollback();
          tx = pm.currentTransaction();
          tx.begin();
        }
    

    其中调用MetaStoreDirectSql.trySetAnsiQuotesForMysql(),该代码会设置sql_mode:

    SET @@session.sql_mode=ANSI_QUOTES

    mysql的JDBC驱动执行execute(sql)的时候,会先检查该语句,然后报Encountered: “@” (64)错。

    解决:
    (目前还没找到好的解决方法)

  • 相关阅读:
    DML
    DDL
    SQL的分类
    SQL语句的规范
    sql的演示
    运算符
    导入导出数据
    mysql的数据类型
    python+selenium2自动化---复用已有的浏览器
    python+selenium2自动化---通过js脚本给时间控件赋值
  • 原文地址:https://www.cnblogs.com/bluejoe/p/5115828.html
Copyright © 2011-2022 走看看