Java ^遇到:预期EOF:选择,值,W…@KDFinal:看起来Impala不支持如果在创建表中不存在。。。我更改了查询。我在Impala中使用if not exists进行测试,它可以工作,我使用这个简单的sqlcreate table if not exis

Java ^遇到:预期EOF:选择,值,W…@KDFinal:看起来Impala不支持如果在创建表中不存在。。。我更改了查询。我在Impala中使用if not exists进行测试,它可以工作,我使用这个简单的sqlcreate table if not exis,java,sql,hadoop,count,impala,Java,Sql,Hadoop,Count,Impala,^遇到:预期EOF:选择,值,W…@KDFinal:看起来Impala不支持如果在创建表中不存在。。。我更改了查询。我在Impala中使用if not exists进行测试,它可以工作,我使用这个简单的sqlcreate table if not exists my_temp_table作为select*from dirty_table,但是当选择子句中有子查询时,它失败了。Hi@Chema,和其他答案一样,这两个SQL只在选择子句中工作,添加创建表后,SQL无法工作。添加异常日志(两个都有相同


^遇到:预期EOF:选择,值,W…@KDFinal:看起来Impala不支持
如果在
创建表中不存在
。。。我更改了查询。我在Impala中使用
if not exists
进行测试,它可以工作,我使用这个简单的sql
create table if not exists my_temp_table作为select*from dirty_table
,但是当
选择
子句中有子查询时,它失败了。Hi@Chema,和其他答案一样,这两个SQL只在
选择
子句中工作,添加
创建表
后,SQL无法工作。添加异常日志(两个都有相同的错误):
[HY000][500051][Cloudera ImpalaJDBCDriver](500051)处理查询/语句时出错。错误代码:0,SQL状态:TStatus(statusCode:ERROR\u STATUS,sqlState:HY000,errorMessage:ParseException:第1行中的语法错误:创建表格如果不存在我的临时表格遇到:EOF预期:选择,值,W…
Hi@KD Final,我更改了解决方案,请立即检查。Hi@KD Final,我用
Cloudera
distribution和
Impala检查了解决方案e> 它工作得很好。我用一个分步解决方案更改了帖子。也许你还面临着其他问题。注意。这种通用方法是正确的-将子查询放在FROM子句中,然后在select列表中引用它们。在即将发布的Impala 4.0(以及Impala的其他Cloudera发行版)中我们确实支持选择列表子查询。在内部,它们被重写为查询,变成与此完全相同的查询。
create table if not exists my_temp_table as select 
41 as rule_id,49 as record_id,
(select count(1) as val from dirty_table where msg regexp '^[1]([3-9])[0-9]{9}$' )/(select count(1) from dirty_table);
[HY000][500051] [Cloudera][ImpalaJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, SQL state: TStatus(statusCode:ERROR_STATUS, sqlState:HY000, errorMessage:ParseException: Syntax error
    WITH q1 AS (
      select count(1) as val from dirty_table where msg regexp '^[1]([3-9])[0-9]{9}$'
    ),
    q2 AS (
      select count(1) val2 from dirty_table
    )
    SELECT 100 * q1.val / q2.val2  result
    FROM q1, q2
select avg(case when msg regexp '^[1]([3-9])[0-9]{9}$' then 100.0 else 0 end) result
from dirty_table
create table my_temp_table as
select avg(case when msg regexp '^[1]([3-9])[0-9]{9}$' then 100.0 else 0 end) result
from dirty_table