分享

【求助】python 通过thrift 连接hive时,hive正则表达式函数不起作用

ltz 发表于 2016-1-13 18:24:36 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 8477
本帖最后由 ltz 于 2016-1-13 18:28 编辑

python:代码[mw_shl_code=python,true]
selectSQL = """        
        SELECT
        utm_aid,
        regexp_extract(ga_source,'([\\w+|\\(\\-|\\.\\w+|\\)]{0,})') track_code
        FROM tbl_analytics
        where analytic_type = 0
        and year = '%s'
        and month = '%s'
        and day = '%s'      
        and length(ga_source)>26
        
        """ % (year, month, day)
        hiveDB = HiveDB()        
        results = hiveDB.select(selectSQL)
        endtime = datetime.datetime.now()
        print "[全站访客数] [Hive] Total time costs  :   %ds" % (endtime - starttime).seconds
        for rows in results:
            print rows[/mw_shl_code]


执行时python脚本通过thrift连接hive,regexp_extract(ga_source,'([\\w+|\\(\\-|\\.\\w+|\\)]{0,})')  并未对ga_source 字符串进行截取,
但单独把sql拿出来,在hive 中执行,正常截取的,请问是什么问题导致的?

已有(3)人评论

跳转到指定楼层
when30 发表于 2016-1-13 22:27:53

回帖奖励 +1 云币

看看是否正确解析,特别是他们之间语法的区别。正则表达式应该没有问题
回复

使用道具 举报

ltz 发表于 2016-1-25 16:02:44
正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" [url=]\\\\[/url] "表示正则表达式中的" \ ",因为正则表达式中如果要匹配" \ ",需要用\来转义,变成" \\ ",而Python语法中又需要对字符串中每一个\进行转义,所以就变成了" [url=]\\\\[/url] "。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条