2014-10-03 6 views
2

У меня есть установка искрового кластера, и я попытался использовать как собственный scala, так и искру sql на моем наборе данных, и настройка, похоже, работает по большей части. У меня есть следующие вопросы:Spark newbie (ODBC/SparkSQL)

От подключения ODBC/extenal к кластеру, чего я должен ожидать? - администратор/разработчик формирует данные и сохраняет/кэширует несколько RDD, которые будут отображаться? (Думая о линиях таблиц улья) - Что было бы эквивалентно подключению к «метателю улья» в искровом/искровом sql?

Является ли мышление вдоль линии улья неисправным?

Мой другой вопрос - когда я выдавать улей запросы, (и говорят, создавать таблицы и такое), он использует тот же улей metastore как Hadoop/улей - Где таблицы получить создается, когда я выдавать SQL запросы, используя sqlcontext ? - Если я сохраняю таблицу, это та же концепция, что и постоянный RDD?

Цените ваши ответы

Nithya

ответ

5

(это написано с искрой 1.1 в виду, иметь в виду, что новые функции, как правило, быстро добавил, некоторые ограничения, указанные ниже, вполне может исчезнуть в какой-то момент в будущее).

Вы можете использовать Spark SQL с синтаксисом Hive и подключиться к метаму Хранилища, что приведет к тому, что ваши команды куста Spark SQL будут исполняться в том же пространстве данных, как если бы они были выполнены через Hive напрямую.

Для этого вам просто нужно создать экземпляр HiveContext, как описано here, и предоставить файл конфигурации hive-site.xml, в котором, среди прочего, указывается, где найти метатест улья.

Результатом оператора SELECT является SchemaRDD, который является RDD объектов Row, который имеет связанную с ним схему. Вы можете использовать его так же, как вы используете любое RDD, включая кеш и сохраняетесь, и эффект тот же (факт, что данные поступают из улья, здесь не влияет).

Если ваша команда hive создает данные, например. «CREATE TABLE ...», соответствующая таблица создается в том же месте, что и обычный Hive, т. Е./Var/lib/hive/storage по умолчанию.

Выполнение Hive SQL через Spark предоставляет вам все преимущества кэширования Spark: выполнение второго SQL-запроса в одном наборе данных в одном и том же искровом контексте обычно будет намного быстрее, чем первый запрос.

Начиная с версии 1.1, возможно start the Thrift JDBC server, что по существу эквивалентно HiveServer2 и, таким образом, позволяет выполнять команды SparkQL через соединение JDBC.

Обратите внимание, что не все функции Hive доступны (еще?), См. Подробности here.

Наконец, вы также можете отказаться от синтаксиса и метастара Hive и выполнить SQL-запросы непосредственно в файлах CSV и Parquet. Я предполагаю, что это станет предпочтительным в будущем, хотя на данный момент набор доступных SQL функций меньше, чем при использовании синтаксиса Hive.