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)错。

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

  • 相关阅读:
    tiny4412 硬件解码
    orb slam2 双目摄像头
    hi3516a arm-hisiv300-linux-gcc jrtplib交叉编译
    第12章_异常
    第10章_内部类:
    IO流深入总结
    实现对存放了Map集合的ArrayList的排序(按照map中某个字段比较)
    UML各图用处

    File类:
  • 原文地址:https://www.cnblogs.com/bluejoe/p/5115828.html
Copyright © 2011-2022 走看看