Estoy trabajando en una solución donde tendré un clúster Hadoop con Hive ejecutándose y quiero enviar trabajos y búsquedas de una aplicación .NET para que se procese y reciba notificaciones cuando Ellos están hechos. No puedo encontrar ninguna solución para interactuar con Hadoop que no sea directamente desde una aplicación Java, ¿hay alguna API a la que pueda acceder que no esté encontrando?Cómo conectarme a Hadoop/Hive desde .NET
Respuesta
Al parecer es posible conectarse a Hadoop con soluciones no Java - ver Do I have to write my application in Java?
API ahorro es también otra forma de otro idioma para acceder a hdfs y una colmena
Con Hadoop: no hay manera recta para conectarse desde C# porque el nivel de comunicación de Hadoop solo funciona con Java y no es multiplataforma. Probablemente sea posible, pero de maneras no triviales. Sé que hay un parche para agregar soporte de Protocol Buffers para Hadoop, pero en el momento de escribirlo (agosto de 2011) aún no se ha lanzado.
Con Hive la situación es mejor porque Hive tiene una interfaz Thrift que admite C#. Puede descargar las interfaces de Hive Thrift y generar el cliente de C# por su cuenta, pero tenga en cuenta que requiere algo de piratería de código generado. En su lugar, le recomendaría que descargue dll desde https://bitbucket.org/vadim/hive-sharp/downloads/hive-sharp-lib.dll o use el administrador de paquetes Nuget, busque "colmena": http://nuget.org/List/Packages/Hive.Sharp.Lib Descargo de responsabilidad: soy el autor.
Hay un controlador ODBC de Hortonworks. No lo he usado personalmente, pero le permitirá trabajar con colmena como con cualquier otro datasource de ODBC. Puede usar la clase OdbcConnection para conectarse a Hive una vez que el controlador ODBC esté instalado.
Como se indicó en otras respuestas, puede usar la aplicación de Ahorro. Para eso, necesita generar clases de C# a partir de los archivos de definición de interfaz, que puede descargar del repositorio de fuentes de Hive. Este enfoque funciona para mí.
Puede usar IKVM, para convertir las bibliotecas de hadoop client java en ensamblados .Net que puede usar desde C#. No he usado IKVM con Hive Client, pero tengo IKVMed alguna otra biblioteca cliente de hadoop y, sorprendentemente, funcionó.
EDIT:
- También hay Apache Templeton, que permite enviar tareas de la colmena (cerdo) y MR también mediante la interfaz de descanso. El problema es que genera otra tarea de mapa para enviar trabajo Hive, lo que lo hace más lento.
Ver si esto ayuda. He tratado de conectar a través de Hadoop C#
Es posible acceder a la colmena utilizando C#, haciendo uso de conector ODBC de Microsoft. Descargar el paquete Nuget para "Microsoft.Hadoop.Hive" y siga el ejemplo proporcionado en http://msdn.microsoft.com/en-us/library/dn749834.aspx
El truco radica en la construcción de la cadena de conexión para conectar con ella. La mejor manera que se me ocurrió fue descargar el controlador ODBC de Microsoft Hive (http://www.microsoft.com/en-us/download/details.aspx?id=40886), instalarlo, luego utilizar el Explorador de servidores en Visual Studio para agregar una nueva conexión y luego crear la cadena de conexión para mí.Para ello, he utilizado los siguientes pasos:
- Cambiar la fuente de datos a "Origen de datos ODBC de Microsoft" y asegurarse de que está utilizando el "Proveedor de datos de .NET Framework para ODBC" como el proveedor de datos.
- En la parte "especificaciones de la fuente de datos", compruebe el botón "Usar cadena de conexión" y luego haga clic en "Crear".
- En la pestaña "Fuente de datos de equipo", seleccione el "ejemplo de Microsoft Colmena DSN" Nombre de origen de datos, haga clic en el botón "OK".
- una ventana titulada "Microsoft Colmena de conexión de controladores ODBC de diálogo" se abrirá. Ingrese una descripción opcional, luego escriba la ruta a su servidor Hive, el puerto que va a utilizar y la base de datos a la que se debe conectar. Indique el tipo de servidor de Hive, y especifique un mecanismo de autenticación para usar, luego llene los campos apropiados.
- Por último, haga clic en el botón "Test" en la parte inferior para asegurar que usted es capaz de conectarse correctamente. Si tiene éxito, haga clic en el botón "Aceptar", luego estará de vuelta en la ventana "Modificar conexión". Ingrese la información de inicio de sesión para su servicio Hive aquí.
O utilice esta fuente de datos o copie la cadena de conexión creada para usted y úsela dentro de su aplicación.
¿Se puede usar esto para escribir datos en hdfs en lugar de colmena? –
biblioteca Uso de Hbase.Net https://hbasenet.codeplex.com/
A continuación, se puede conectar a hbase/colmena como se muestra a continuación:
Client c = new Client("10.20.14.179", 9090, 1000000);
var cli = c.TotalClients;
var tableList = c.GetTableNames();
FYI, estamos utilizando Hortonworks caja de arena y se conecta muy bien.
En el ejemplo anterior, 10.20.14.179 es host y 9090 es port.
Además, a continuación podrían ayudar a https://community.hortonworks.com/questions/25101/is-there-a-way-to-connect-to-hbase-using-c.html
No hay nativa C# HBase cliente. sin embargo, hay varias opciones para interactuar con HBase desde C#.
C# HBase Thrift cliente - Thrift permite definir los extremos de servicio y modelos de datos en un formato común y el uso de generadores de código a crear enlaces específicos del lenguaje. HBase proporciona un servidor Thirft y definiciones . Hay muchos ejemplos en línea para crear un Thrift Client C# HBase .
Marlin - Marlin es un cliente C# para interactuar con Stargate (HBASE REST API) que finalmente se convirtió en hbase-sdk-for-net. No he probado personalmente esto contra HBase 1.x +, pero considerando que usa Stargate, espero que funcione. Si planea usar Stargate e implementar su propio cliente, que recomendaría sobre Thrift, asegúrese de usar protobufs para evitar la serialización de JSON sobrecarga. El uso de un enfoque basado en HTTP también facilita las solicitudes de saldo de carga en múltiples puertas de enlace.
Phoenix Query Server - Phoenix es un skin SQL en HBase. El servidor Phoenix Query es una API REST para enviar consultas SQL a Phoenix. Aquí está algún código de ejemplo, sin embargo, aún no lo he probado.
Simba HBase Controlador ODBC: utilizando ODBC para conectarse a HBase. Escuché comentarios positivos sobre este enfoque, especialmente de herramientas como Tableau. Esto no es de código abierto y requiere comprar una licencia.
- 1. ¿Cómo uso Jconsole para conectarme a EC2?
- 2. Llamando a Clojure desde .NET
- 3. No puedo conectarme a FTP en Gingerbread
- 4. Cómo conectarme al agente JMX usando python
- 5. ¿Debo continuar volviendo a conectarme a mysql en PHP?
- 6. ¿Cómo puedo conectarme a la impresión de Perl?
- 7. ¿cómo puedo conectarme a un mongodb del código de Ruby?
- 8. Cómo conectarme a un servidor neo4j instalado localmente usando Java
- 9. ¿Cómo uso node-mongodb-native para conectarme a Heroku?
- 10. ¿Cómo puedo conectarme a Weblogic de forma remota utilizando JConsole?
- 11. Cómo conectarme con Java en Active Directory
- 12. ¿Puedo conectarme a SQL Server usando la Autenticación de Windows desde la aplicación web Java EE?
- 13. ¿Puedo conectarme directamente a un servidor Redis desde JavaScript que se ejecuta en un navegador?
- 14. Intentando conectarme a un servidor MySQL remoto (error 2003)
- 15. ¿Cómo llamar a un servicio web .NET desde android?
- 16. Cómo llamar a una DLL .NET desde un proceso Win32?
- 17. ¿Puedo conectarme a una API de Java con C#?
- 18. ¿Cómo puedo conectarme a una base de datos externa desde una declaración sql o un procedimiento almacenado?
- 19. No puedo conectarme a MySQL en Ruby on Rails
- 20. Cómo conectarme de forma remota a jmx en tomcat usando tunneling ssh y no romper ehcache
- 21. ¿Cómo enviar un comando personalizado a un servicio Windows .NET desde el código .NET?
- 22. Cómo conectarme a 2 bases de datos al mismo tiempo en PHP
- 23. Cómo publicar solicitudes SOAP desde .NET?
- 24. ¿Cómo detectar .NET 4 desde ASP.NET?
- 25. ¿Cómo ejecutar un paquete SSIS desde .NET?
- 26. Cómo conectarme al servidor local con SSH (PuTTy)
- 27. Consumir API REST desde .NET
- 28. Conectando a Oracle desde F #
- 29. cómo conectarme al analizador php en la plataforma netbeans
- 30. ¿Cómo conectarse a SQL Server desde otra computadora?
Ah, yo sabía sobre la transmisión (pero eso funciona desde la línea de comandos) - pero no sabía sobre las Hadoop Pipes que es compatible con SWIG, así que debería ser capaz de generar una API C# en la parte superior eso. –