通过jdbc客户端使用配置单元udf时出现奇怪错误

通过jdbc客户端使用配置单元udf时出现奇怪错误,jdbc,hadoop,hive,hiveql,Jdbc,Hadoop,Hive,Hiveql,全部。当我通过jdbc客户端使用配置单元udf时,遇到了一个奇怪的错误 我有一个udf来帮助我将字符串转换为时间戳格式,称为reformat_date。我首先执行addjar和创建临时函数,两者都很好 SQL还可以在配置单元cli模式下解释,并且可以执行。但在使用jdbc客户端时,我遇到了错误: Query returned non-zero code: 10, cause: FAILED: Error in semantic analysis: Line 1:283 Wron

全部。当我通过jdbc客户端使用配置单元udf时,遇到了一个奇怪的错误

我有一个udf来帮助我将字符串转换为时间戳格式,称为reformat_date。我首先执行addjar和创建临时函数,两者都很好

SQL还可以在配置单元cli模式下解释,并且可以执行。但在使用jdbc客户端时,我遇到了错误:

    Query returned non-zero code: 10, cause: 
    FAILED: Error in semantic analysis: Line 1:283 Wrong arguments ''20121201000000'': 
    org.apache.hadoop.hive.ql.metadata.HiveException: 
    Unable to execute method public org.apache.hadoop.io.Text com.aa.datawarehouse.hive.udf.ReformatDate.evaluate(org.apache.hadoop.io.Text)  on object com.aa.datawarehouse.hive.udf.ReformatDate@4557e3e8 of class com.aa.datawarehouse.hive.udf.ReformatDate with arguments {20121201000000:org.apache.hadoop.io.Text} of size 1: 
    at com.aa.statistic.dal.impl.TjLoginDalImpl.selectAwakenedUserCount(TjLoginDalImpl.java:258)
    at com.aa.statistic.backtask.service.impl.UserBehaviorAnalysisServiceImpl.recordAwakenedUser(UserBehaviorAnalysisServiceImpl.java:326)
    at com.aa.statistic.backtask.controller.BackstatisticController$21.execute(BackstatisticController.java:773)
    at com.aa.statistic.backtask.controller.BackstatisticController$DailyExecutor.execute(BackstatisticController.java:823)
我的SQL是

select count(distinct a.user_id) as cnt from ( select user_id, user_kind, login_date, login_time from tj_login_hive where p_month = '2012_12' and login_date = '20121201' and user_kind = '0' ) a join ( select user_id from tj_login_hive where p_month <= '2012_12' and datediff(to_date(reformat_date(concat('20121201', '000000'))), to_date(reformat_date(concat(login_date, '000000')))) >= 90 ) b on a.user_id = b.user_id 

谢谢。

我认为您的udf抛出了异常。 如果您使用了reformat_date函数,则应检查您的逻辑。 如果没有,您应该检查udf的规格。

重新格式化日期是我的udf。我可以在配置单元外壳中使用它,但不能通过JavaJDBC客户端使用它。