¿Hay alguna forma de exportar los resultados de Pig directamente a una base de datos como mysql?Una forma de exportar los resultados de Pig a una base de datos
Respuesta
Teniendo en cuenta lo que dijo orangeoctopus (cuidado con DDOS ...) ¿has echado un vistazo al DBStorage?
data = LOAD '...' AS (...);
...
STORE data INTO DBStorage('com.mysql.jdbc.Driver', 'dbc:mysql://host/db', 'INSERT ...');
El problema principal que veo es que cada reductor efectivamente se va a insertar en la base de datos al mismo tiempo.
Si no cree que esto sea un problema, le sugiero que escriba un custom Storage method que usa JDBC (o algo similar) para insertar directamente en la base de datos y no escribir nada en HDFS.
Si tiene miedo de realizar un ataque DDOS en su propia base de datos, quizás sea mejor recopilar los datos en HDFS y realizar una carga masiva separada en mysql.
Actualmente estoy experimentando con una aplicación de cerdo incrustado que carga resultados en mysql a través de PigServer.OpenIterator y una conexión JDBC. Ha funcionado muy bien en las pruebas, pero aún no lo he probado a escala. Esto es similar al método de almacenamiento personalizado ya sugerido, pero se ejecuta desde un solo punto, por lo que no hay un ataque DDOS accidental. De hecho, terminas pagando el costo de transferencia de red dos veces (clúster -> máquina de ensayo, máquina de ensayo -> servidor de bases de datos) si no ejecutas la carga fuera del servidor de bases de datos (personalmente prefiero no ejecutar nada excepto el propio DB fuera de la base de datos servidor), pero eso no es diferente de la opción "escribir el archivo y cargarlo a granel".
Sqoop puede ser el buen camino a seguir, pero es difícil de configurar (en mi humilde opinión) ya que todos estos proyectos relacionados Hadoop ...
DBStorage de cerdo es funciona bien (al menos para almacenar).
No se olvide de registrar el PiggyBank y el controlador de MySQL:
-- Register Piggy bank
REGISTER /opt/cmr/pig/pig-0.10.0/lib/piggybank.jar;
-- Register MySQL driver
REGISTER /opt/cmr/mysql/drivers/mysql-connector-java-5.1.15-bin.jar
Aquí está un ejemplo de llamada:
-- Store a relation into a SQL table
STORE relation INTO 'unused' USING org.apache.pig.piggybank.storage.DBStorage('com.mysql.jdbc.Driver', 'jdbc:mysql://<mysqlserver>/<database>', '<login>', '<password>', 'REPLACE INTO <table> (<column1>, <column2>) VALUES (?, ?)');
- 1. ¿Cómo exportar una base de datos MySQL a JSON?
- 2. ¿Cuál es la forma más fácil de exportar una base de datos SQLServer 2000 a XML?
- 3. ¿Hay alguna forma de "exportar" una base de datos SQL Server completa (esquema y datos) a texto?
- 4. Exportar JasperInforma los resultados de la consulta
- 5. consulta de base de datos Ordenar los resultados a lo largo de una curva
- 6. ¿Base de datos para importar los resultados de NUnit?
- 7. ¿Crear una base de datos desde otra base de datos?
- 8. ¿La mejor manera de exportar una tabla de base de datos a un archivo YAML?
- 9. Copiar datos de una tabla en una base de datos a otra base de datos separada
- 10. Agregando resultados de la base de datos a la matriz
- 11. Cómo copiar una tabla de una base de datos mysql a otra base de datos mysql
- 12. PIG: Filtro de una cadena sobre la base de una palabra
- 13. Conéctese condicionalmente a una base de datos
- 14. ¿Cómo exportar una base de datos de Access completa a SQL Server?
- 15. Cómo copiar vistas de una base de datos a otra base de datos
- 16. Migrar una base de datos de desarrollo MySQL a una base de datos de producción
- 17. MySql, ¿cómo puedo exportar índices desde mi base de datos de desarrollo a mi base de datos de producción?
- 18. Forma estándar de almacenar nombres en una base de datos
- 19. Una manera de leer datos de la tabla de MySQL a Pig
- 20. Mover una tabla de una base de datos a otra base de datos SQL Server
- 21. Cómo exportar todas las tablas de una Base de datos de Access a Excel - Una hoja para cada tabla
- 22. Copie una columna de una base de datos a otra
- 23. El almacenamiento de datos a SequenceFile de Apache Pig
- 24. ¿Hay alguna forma de exportar un objeto ActiveRecord a seeds.rb?
- 25. ¿Qué es una forma mantenible de guardar "calificación por estrellas" en una base de datos?
- 26. Transfiera datos de una base de datos a otra base de datos
- 27. ¿Exportar de la base de datos de App Engine a la base de datos de desarrollo local?
- 28. ¿Cuál es la forma más rápida de exportar filas de dataGridView a Excel o a una base de datos de SQL Server?
- 29. Cómo exportar un subconjunto consistente de la base de datos
- 30. Cómo copiar datos de una base de datos/tabla a otra base de datos/tabla
parece que no hay forma de evitar escribir una UDF que utiliza JDBC. .¡Gracias! – Christoph