1

我正在使用 Snappydata 运行一些查询,并使用 sql with 语句:

WITH x AS (
  SELECT DISTINCT col_a, col_b
  FROM table_a
)
INSERT INTO table_b
SELECT x.col_a, x.col_b
FROM x
  JOIN table_c c ON x.col_a = c.col_a and x.col_b = c.col_b

此sql代码在本地模式下运行时运行良好,但是当我将编译好的jar文件提交到Snappydata集群时,它会抛出一个错误,说表“APP.X”不存在,

org.apache.spark.sql.TableNotFoundException: Table 'APP.X' not found;

知道为什么会这样吗?

4

2 回答 2

2

这是一个已知限制,因为近似查询处理 (AQP) 规则解析会尝试过早解析名称。我们在运行 TPC-DS 查询时看到了这一点。它已在最新的 AQP 主服务器上修复,修复将在 1.0 中提供。目前有两种选择:

a) 更改为普通子查询变体:

INSERT INTO table_b
SELECT x.col_a, x.col_b
FROM (SELECT DISTINCT col_a, col_b FROM table_a) x
  JOIN table_c c 
  ON x.col_a = c.col_a 
  AND x.col_b = c.col_b

b) 或者如果不使用 AQP 查询,那么您可以从产品 jars 目录中移出 snappydata-aqp jar

于 2017-09-12T07:33:05.600 回答
0

尝试添加 FROM x

WITH x AS (
  SELECT DISTINCT col_a, col_b
    FROM table_a
)

INSERT 
  INTO table_b
SELECT x.col_a, 
       x.col_b
  FROM x
  JOIN table_c c 
    ON x.col_a = c.col_a 
   AND x.col_b = c.col_b
于 2017-09-11T22:30:21.383 回答