【问题标题】:ParseException in Hive queryHive 查询中的 ParseException
【发布时间】:2014-09-22 09:25:49
【问题描述】:

我正在运行以下 Hive 查询(MapR 版本 0.12):

SELECT A.ID, A.AMT1, A.AMT2
FROM (
  SELECT ID as ID, NET_AMOUNT as AMT1
  FROM TEST_TABLE
  WHERE DATE_BY >='2012-10-01' AND DATE_BY <='2012-10-31') as q
  JOIN (
    SELECT ID as ID, NET_AMOUNT as AMT2
    FROM TEST_TABLE
    WHERE DATE_BY >='2013-10-01' AND DATE_BY <='2013-10-31') as r  
  ON q.ID=r.ID ) A

但我收到此错误:

错误:失败:ParseException line 2:2 无法识别子查询源中 '(' 'SELECT' 'ID' 附近的输入

【问题讨论】:

    标签: hadoop hive


    【解决方案1】:

    您的查询似乎有些问题,我认为应该是这样的:

    SELECT q.ID,q.AMT1,q.AMT2 FROM  
    (SELECT ID as ID, NET_AMOUNT as AMT1 FROM TEST_TABLE WHERE DATE_BY >='2012-10-01' AND DATE_BY <='2012-10-31')  q 
    JOIN (SELECT ID as ID ,NET_AMOUNT as AMT2 FROM TEST_TABLE WHERE DATE_BY >='2013-10-01' AND DATE_BY <='2013-10-31')  r
    on (q.ID=r.ID )
    

    但是当您比较 DATES 时,正如 @Antariksha 指出的那样,您需要将其投射。 但我更喜欢更好的选择,以时间戳格式比较 DATE。因此,在这种情况下,您的查询将如下所示:

    SELECT q.ID,q.AMT1,q.AMT2 FROM  
    (SELECT ID as ID, NET_AMOUNT as AMT1 FROM TEST_TABLE WHERE unix_timestamp(DATE_BY,"<your date patern>") >=unix_timestamp('2012-10-01',"YYYY-MM-DD") AND unix_timestamp(DATE_BY,"<your date patern>") <=unix_timestamp('2012-10-31',"YYYY-MM-DD"))  q 
    JOIN (SELECT ID as ID ,NET_AMOUNT as AMT2 FROM TEST_TABLE WHERE unix_timestamp(DATE_BY,"<your date patern>") >=unix_timestamp('2013-10-01',"YYYY-MM-DD") AND unix_timestamp(DATE_BY,"<your date patern>") <=unix_timestamp('2013-10-31',"YYYY-MM-DD"))  r
    on (q.ID=r.ID )
    

    希望对你有帮助...!!!

    【讨论】:

    • 为什么时间戳比日期好?分辨率是一样的。
    • 嗯,有多种原因:1.) 时间戳适用于 Hive 版本 0.8 到最新版本。因此,您的查询将足够通用。 2.) 当前的 DATE 数据类型只有 YYYY-MM-DD 格式,但时间戳支持日期到毫秒。所以这是另一个优势。但是对于这个特殊的问题,我认为 Date / Timestamp 都可以。
    【解决方案2】:

    您需要使用cast('your date' as date) 将要比较的日期转换为日期,因为它当前是一个字符串。

    这可能无法解决您的问题,因此请在尝试后编辑您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      相关资源
      最近更新 更多