Подтвердить что ты не робот

Как подключиться к Hadoop/Hive из .NET.

Я работаю над решением, в котором у меня будет Hadoop-кластер с запуском Hive, и я хочу отправить задания и запросы на кусты из приложения .NET для обработки и получить уведомление, когда они будут выполнены. Я не могу найти какие-либо решения для взаимодействия с Hadoop, кроме как напрямую с Java-приложением, есть ли API, к которому я могу получить доступ, который я просто не нахожу?

4b9b3361

Ответ 2

С Hadoop: нет прямого подключения к С#, потому что уровень связи Hadoop работает только с java и не является перекрестной платформой. Возможно, это возможно, но очень нетривиально. Я знаю, что есть патч для добавления поддержки буферов протокола для Hadoop, но на момент написания (август 2011 г.) еще не выпущен.

С ситуацией с улей лучше, потому что у Hive есть интерфейс Thrift, который поддерживает С#. Вы можете загружать интерфейсы Hive Thrift и генерировать клиент С# самостоятельно, но будьте осторожны, что для этого требуется взлома сгенерированного кода. Вместо этого я бы порекомендовал вам загрузить dll из https://bitbucket.org/vadim/hive-sharp/downloads/hive-sharp-lib.dll или использовать диспетчер пакетов Nuget, найти "hive": http://nuget.org/List/Packages/Hive.Sharp.Lib Отказ от ответственности: Я автор.

Ответ 3

  • Существует драйвер ODBC Hortonworks. Я не использовал его лично, но он позволит вам работать с ульем, как с любым другим источником данных ODBC. Вы можете использовать класс OdbcConnection для подключения к Hive после установки драйвера ODBC.

  • Как отмечено в других ответах, вы можете использовать Thrift api. Для этого вам нужно сгенерировать классы С# из файлов определения интерфейса, которые вы можете загрузить из репозитория источника Hive. Этот подход работает для меня.

  • Вы можете использовать IKVM, чтобы конвертировать java-библиотеки javascript в группы .Net, которые вы можете использовать с С#. Я не использовал IKVM с клиентом Hive, но у меня есть IKVMed какая-то другая клиентская библиотека hadoop, и на удивление это сработало.

EDIT:

  • Также есть Apache templeton, который позволяет отправлять задания Hive (Pig и MR) с помощью интерфейса Rest. Проблема заключается в том, что он создает другую задачу карты, чтобы отправить задание Hive, что делает его медленнее.

Ответ 4

Thrift API - это еще один способ для другого языка для доступа к hdfs и hive

Ответ 5

Доступ к Hive с использованием С# возможен с помощью соединителя Microsoft ODBC. Загрузите пакет Nuget для "Microsoft.Hadoop.Hive" и следуйте примеру http://msdn.microsoft.com/en-us/library/dn749834.aspx

Трюк заключается в создании строки подключения для подключения к ней. Лучший способ, которым я придумал, - загрузить драйвер OUBC Microsoft Hive (http://www.microsoft.com/en-us/download/details.aspx?id=40886), установить его, а затем использовать Server Explorer внутри Visual Studio добавить новое соединение, а затем построить для меня строку подключения. Для этого я использовал следующие шаги:

  • Измените источник данных на "Источник данных Microsoft ODBC" и убедитесь, что вы используете поставщик данных .NET Framework для ODBC в качестве поставщика данных.

Change Data Source Dialog Window

  • В разделе "Спецификация источника данных" установите флажок "Использовать строку подключения", затем нажмите кнопку "Создать".

Add Connection Dialog Window

  • На вкладке "Источник данных машины" выберите имя источника данных "Пример Microsoft Hive DSN", затем нажмите кнопку "ОК".

Select Data Source Dialog Window

  • Откроется окно под названием "Диалог подключения драйверов ODBC от Microsoft". Введите необязательное описание, затем введите путь к вашему серверу Hive, порт, который вы будете использовать, и к какой базе данных он должен подключиться. Укажите тип сервера Hive и укажите механизм проверки подлинности, затем заполните соответствующие поля.

Microsoft Hive ODBC Driver Connection Dialog Window

  • Наконец, нажмите кнопку "Тест" внизу, чтобы убедиться, что вы можете успешно подключиться. В случае успеха нажмите кнопку "ОК", затем вернитесь в окно "Изменить подключение". Введите регистрационную информацию для своего сервиса Hive.

Либо используйте этот источник данных, либо скопируйте строку подключения, которую он создал для вас, и используйте его в своем приложении.

Ответ 7

Использовать библиотеку Hbase.Net из https://hbasenet.codeplex.com/

Затем вы можете подключиться к hbase/hive, как показано ниже:

        Client c = new Client("10.20.14.179", 9090, 1000000);

        var cli = c.TotalClients;

        var tableList = c.GetTableNames();

FYI, мы используем песочницу hortonworks, и она прекрасно соединяется.

В приведенном выше примере 10.20.14.179 является хостом, а 9090 - портом.

Кроме того, ниже может помочь https://community.hortonworks.com/info/25101/is-there-a-way-to-connect-to-hbase-using-c.html

Не существует собственного клиента С# HBase. однако существует несколько вариантов взаимодействия с HBase с С#.

  • Клиент С# HBase Thrift - Thrift позволяет определять конечные точки обслуживания и модели данных в общем формате и с использованием генераторов кода для создавать языковые привязки. HBase предоставляет сервер Thirft и определения. Есть много примеров онлайн для создания С# HBase Брокерский клиент.

  • Марлин - Марлин - клиент С# для взаимодействия со Stargate (HBase REST API), который в конечном итоге стал hbase-sdk-for-net. Я нет лично проверил это против HBase 1.x +, но учитывая, что он использует Я ожидаю, что это будет работать. Если вы планируете использовать Stargate и реализовать свой собственный клиент, который я бы рекомендовал Берегите, не забудьте использовать protobufs, чтобы избежать сериализации JSON накладные расходы. Использование подхода на основе HTTP также значительно облегчает запросы баланса нагрузки по нескольким шлюзам.

  • Phoenix Query Server - Phoenix - это скин SQL на HBase. Запрос Phoenix Сервер - это REST API для отправки SQL-запросов в Phoenix. Здесь в некотором примерном коде, однако, я еще не тестировал его.

  • Драйвер ODBC Simba HBase - использование ODBC для подключения к HBase. я слышал положительные отзывы об этом подходе, особенно из таких инструментов, как Tableau. Это не открытый исходный код и требует приобретения лицензии.