Как подключиться к Hadoop / Hive из .NET - PullRequest
13 голосов
/ 16 августа 2010

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

Ответы [ 7 ]

10 голосов
/ 17 августа 2010

Очевидно, что возможно подключиться к Hadoop с помощью решений не-Java - см. Нужно ли мне писать приложение на Java?

8 голосов
/ 20 августа 2011

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

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

7 голосов
/ 08 декабря 2012
  1. Есть драйвер ODBC для Hortonworks. Я не использовал его лично, но он позволит вам работать с ульем, как с любым другим источником данных ODBC. Вы можете использовать класс OdbcConnection для подключения к Hive после установки драйвера ODBC.

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

  3. Вы можете использовать IKVM для преобразования java-библиотек клиентов hadoop в сборки .Net, которые вы можете использовать из C #. Я не использовал IKVM с клиентом Hive, но я использовал IKVMed для некоторой другой клиентской библиотеки Hadoop, и, к удивлению, она сработала.

EDIT:

  1. Существует также Apache Templeton, который позволяет отправлять задания Hive (также Pig и MR) с использованием интерфейса Rest. Проблема в том, что он запускает другую задачу карты для отправки задания Hive, что замедляет его.
3 голосов
/ 12 января 2015

Можно получить доступ к Hive, используя C #, используя соединитель ODBC от Microsoft.Загрузите пакет Nuget для « Microsoft.Hadoop.Hive » и следуйте примеру, приведенному на http://msdn.microsoft.com/en-us/library/dn749834.aspx

. Хитрость заключается в построении строки соединения для соединения с ним.Лучший способ, с помощью которого я придумал, - это загрузить драйвер ODBC для Microsoft Hive (http://www.microsoft.com/en-us/download/details.aspx?id=40886), установить его, затем использовать обозреватель серверов в 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, порт, который вы будете использовать,и к какой базе данных это должно подключатьсят к.Укажите тип сервера Hive и укажите используемый механизм аутентификации, затем заполните соответствующие поля.

Microsoft Hive ODBC Driver Connection Dialog Window

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

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

3 голосов
/ 20 августа 2010

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

1 голос
/ 04 марта 2014

Посмотрите, поможет ли это. Я пытался подключиться к Hadoop через C #

Как общаться с Hadoop через Hive с помощью .NET / C #

0 голосов
/ 31 марта 2016

Используйте библиотеку 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();

К вашему сведению, мы используем изолированную программную среду hortonworks, и она отлично подключается,

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

Также ниже может помочь https://community.hortonworks.com/questions/25101/is-there-a-way-to-connect-to-hbase-using-c.html

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

  1. C # HBase Thrift client - Thrift позволяет определять конечные точки служб и модели данных в общем формате и использовать генераторы кода для создания языкаконкретные привязки.HBase предоставляет Thirft-сервер и определения.В Интернете есть много примеров создания Cri HBase Thrift Client.

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

  3. Phoenix Query Server - Phoenix - это оболочка SQL для HBase.Phoenix Query Server - это REST API для отправки SQL-запросов в Phoenix.Вот пример кода, однако я еще не тестировал его.

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

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