#sql #hadoop #split #hive #hiveql
#sql #hadoop #разделение #улей #hiveql
Вопрос:
У меня есть университетский проект, в котором мне нужно выполнить простой анализ большого набора данных по моему выбору, и мы должны выполнить это в системе Hadoop. Я выбираю использовать Hive, потому что у меня практически нет опыта работы с базами данных, но мне нравится Hive.
В любом случае, у меня есть шахматный набор данных, и я смог извлечь некоторые интересующие столбцы, такие как названия начальных ходов, и найти, как часто они встречаются. Подобные вещи.
Я хотел бы иметь возможность взглянуть на первые несколько ходов из каждой игры, и это подводит меня к моей проблеме. Обозначения для всех перемещений хранятся в вызываемом столбце moves
и выглядят следующим образом:
Этот столбец находится в вызываемом файле .csv chess_game
.
Как бы я мог извлечь, скажем, первые 4 перемещения в новую таблицу, называемую что-то вроде opening_moves
.
Заранее спасибо за любые советы.
Комментарии:
1. Перемещения разделены пробелом? Не могли бы вы опубликовать его в виде текста, а не изображения? Первые 4 хода — это d4, d5, c4, c6 ИЛИ что именно?
2. @leftjoin В данный момент я нахожусь на работе, и, похоже, запрещен доступ к таким вещам, как Dropbox. Я постараюсь добавить позже.
Ответ №1:
Вы можете разделить строку перемещений с помощью функции split. Вот так:
select rating,
moves[0] as first,
moves[1] as second,
moves[2] as third,
moves[3] as fourth
(
select rating, split(moves, ' ') as moves from your_table
) s
;