【问题标题】:multi table join with apache drill使用 Apache Drill 进行多表连接
【发布时间】:2018-03-22 09:55:52
【问题描述】:

我正在尝试从 mysql 加入一个表,从 hdfs 加入 2 个 csv 文件,所以总的来说,我正在尝试使用 apache Drill 加入 3 个表。

当我加入 mysql 表和 1 个 dfs 文件时它可以工作,但当我尝试加入 1 个 mysql 表和 2 个 dfs csv 文件时失败。请帮忙。

代码如下:

select CAST(a.Longitude AS DOUBLE),CAST(a.Latitude AS DOUBLE) 
from ((MySQL.dummy.`accident_05_07` as a 
inner join dfs.`/user/drill/accidents_2009_to_2011.csv` as b 
on a.Longitude=CAST(b.Longitude AS DOUBLE)) 
inner join dfs.`/user/drill/accidents_2012_to_2014.csv` as c 
on a.Longitude=CAST(c.Longitude AS DOUBLE))

[错误 ID:90c4ac92-83e9-4b23-bcd9-5c1535cd58ad 开启 inpunpclx1825e.kih.kmart.com:31010] org.apache.drill.common.exceptions.UserRemoteException:解析错误: 非法上下文中遇到的非查询表达式 SQL Query select CAST(a.Longitude AS DOUBLE),CAST(a.Latitude AS DOUBLE) from((MySQL.dummy.accident_05_07 作为内连接 dfs./user/drill/accidents_2009_to_2011.csv as b on a.Longitude=CAST(b.Longitude AS DOUBLE)) 内连接 dfs./user/drill/accidents_2012_to_2014.csv as c on a.Longitude=CAST(c.Longitude AS DOUBLE)) ^

【问题讨论】:

  • 你能展示你的代码吗?
  • 用代码编辑了问题。
  • 你找到解决办法了吗@LelioFaieta
  • 同时使用堆栈跟踪发布错误消息将有助于识别问题。
  • 您的查询中的问题是您的额外括号。如果您删除它们,您的 sql 将运行。连接将按顺序从第一个表到最后一个表。

标签: mysql hdfs apache-drill


【解决方案1】:

试试这个方法:

SELECT `a`.`Longitude`,`a`.`Latitude` 
FROM ((`MySQL`.`dummy`.`accident_05_07` `a` 
INNER JOIN `dfs`.`/user/drill/accidents_2009_to_2011.csv` `b` 
ON `a`.`Longitude`=`b`.`Longitude`) 
INNER JOIN `dfs`.`/user/drill/accidents_2012_to_2014.csv` `c` 
ON `a`.`Longitude`=`c`.`Longitude`)

【讨论】:

  • 谢谢。我已经解决了这个问题。谢谢你的回答。 :)
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多