Как сделать длинный запрос с помощью WHERE IN с использованием Spark? - PullRequest
2 голосов
/ 19 апреля 2019

У меня есть большая база данных с около 500 гигабайт данных столбца.Я пытаюсь получить доступ к данным, используя Spark для DataBricks, но запрос слишком длинный, чтобы позволить мне получить данные, которые меня интересуют. Я новичок в этом, поэтому, пожалуйста, извините, если вопрос не имеет полного смысла.

Единственный способ сделать это прямо сейчас - это разбить запрос, использовать его часть и повторить.

SELECT *
FROM myDataTable
WHERE rollID in ('1', '2', '148', '123', '21432'....)

Ожидается: получить все данные одновременно, чтобы я могможно провести анализ кластера.

1 Ответ

1 голос
/ 19 апреля 2019

Вместо использования WHERE IN вы можете сделать это с помощью JOIN. В этом случае вы можете использовать LEFT SEMI JOIN.

SELECT * FROM myDataTable t LEFT SEMI JOIN list l ON t.rollID = l.rollID

Чтобы сделать это, вам нужно создать таблицу / фрейм данных, содержащий ваши значения «где в», и вы можете представить это как использование объединения для выполнения фильтра. Вы можете получить значение, указав, что фрейм данных фильтра / списка должен передаваться, то есть скопировать всю таблицу всем исполнителям, но, возможно, Spark достаточно умен, чтобы сделать это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...