(это написано с искрой 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.