0

我有一个像

select * from log where concat_ws('-',year,month,day) between 2017-09-13 and 2017-09-19

这是错误的,因为 2017-09-13 和 2017-09-19 没有被 '' 包围。

在直线中,它会导致错误消息,如

错误:编译语句时出错:失败:ParseException 行 2:0 在 ']' 附近的 'select' 处缺少 EOF(状态 = 42000,代码 = 40000)

但在 PyHive 中,空结果 [] 正常。顺便说一句,我通过 sqlalchemy 使用它。

我尝试在 create_engine() 函数和日志记录中使用 echo=True,但两者都无法输出错误消息。

from sqlalchemy.engine import create_engine
from pyhive import hive
import logging

logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.DEBUG)

sql = "select * from log where concat_ws('-',year,month,day) between 2017-09-13 and 2017-09-19"

db = create_engine(
    'hive://user:pass@ip:port/test',
    connect_args={
        'auth': 'LDAP', 
        'configuration': {
            'mapreduce.job.queuename': 'queue'
        }
    },
    echo=True
)
resultProxy=db.execute(sql)
data = resultProxy.fetchall()

2017-09-20 12:17:22,904 INFO sqlalchemy.engine.base.Engine select * from log where concat_ws('-',year,month,day) 在 2017-09-13 和 2017-09-19 之间

INFO:sqlalchemy.engine.base.Engine:select * from log where concat_ws('-',year,month,day) 在 2017-09-13 和 2017-09-19 之间

2017-09-20 12:17:22,905 信息 sqlalchemy.engine.base.Engine {}

信息:sqlalchemy.engine.base.Engine:{}

所以想知道有没有办法得到服务器端的错误,调试起来会很方便。

4

1 回答 1

0

我知道了,2017-09-13 是有效的 Hive 语法。它只是意味着整数减法。直线的错误是关于别的东西。

于 2017-09-22T06:11:55.920 回答