Как просмотреть этот запрос на Apache Drill - PullRequest
0 голосов
/ 17 сентября 2018

Мне нужна помощь.

У меня есть такие данные:

anum    bnum
8661994 8661993
8661994 8661993
8661994 8661993
8661992 8661994

В SQL я могу сделать что-то вроде этого:

SELECT
anum,
(
    SELECT COUNT(*)
    FROM dataku t2
    WHERE t2.anum=t1.anum
),
(
    SELECT COUNT(*)
    FROM dataku t3
    WHERE t3.bnum=t1.anum
)
FROM dataku t1
GROUP BY t1.anum;

результат:

anum       count_anum      count_anum_on_bnum
8661992    1                0
8661994    3                1

как мне этого добиться в Apache Drill? (данные в CSV) Я попробовал это, но дал мне ошибку

SELECT
anum,
(
    SELECT COUNT(*)
    FROM hdfs.`/test/*` as t2
    WHERE t2.anum=t1.anum
),
(
    SELECT COUNT(*)
    FROM hdfs.`/test/*` as t3
    WHERE t3.anum=t1.anum
)
FROM hdfs.`/test/*` as t1
GROUP BY t1.anum
LIMIT 1000

ошибка: org.apache.drill.common.exceptions.UserRemoteException: PLAN ERROR: Невозможно преобразовать RexNode в эквивалентное выражение Drill. Класс RexNode: org.apache.calcite.rex.RexCorrelVariable, Дайджест RexNode: $ cor1 [Идентификатор ошибки: 7e975eb8-ab37-432f-9387-99126f1f43cf на мастере: 31010]

CSV-конфигурация в hdfs

"csv": {
  "type": "text",
  "extensions": [
    "csv"
  ],
  "delimiter": ","
},

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Добавьте "extractHeader": true свойство к вашему плагину формата CSV и используйте следующий запрос:

0: jdbc:drill:zk=local> select t1.anum, t1.count_anum, coalesce(t2.count_bnum, 0) as count_anum_on_bnum from 
. . . . . . . . . . . > (select anum, count(anum) as `count_anum` from dfs.`/tmp/test.csv` group by anum) t1
. . . . . . . . . . . > left join 
. . . . . . . . . . . > (select bnum, count(bnum) as `count_bnum` from dfs.`/tmp/test.csv` group by bnum) t2
. . . . . . . . . . . > on t1.anum = t2.bnum;
+----------+-------------+---------------------+
|   anum   | count_anum  | count_anum_on_bnum  |
+----------+-------------+---------------------+
| 8661992  | 1           | 0                   |
| 8661994  | 3           | 1                   |
+----------+-------------+---------------------+
2 rows selected (0.167 seconds)

Детализация не может спланировать запрос, предоставленный.Вы можете отправить билет Jira для его реализации: https://issues.apache.org/jira/projects/DRILL

0 голосов
/ 18 сентября 2018

Я попробовал это на Drill 1.13 и увидел проблему с NPE. Есть несколько вопросов: Какая версия Drill это? Кроме того, вы можете вставить конфигурацию, используемую для "csv" в свой плагин хранения DFS.

Например, у меня есть это:

 "csv": {
      "type": "text",
      "extensions": [
        "csv"
      ],
      "extractHeader": true,
      "delimiter": ","
    }
...