Tengo el caso de uso a continuación :

Mi solicitud de una tabla que tiene de varios años de datos en RDBMS DB. Hemos utilizado sqoop para obtener datos en HDFS y ha cargado en la colmena de la tabla de particiones de año, mes.

Ahora, las actualizaciones de la aplicación, y se inserta nuevos registros en RDBMS la Tabla de la mesa todos los días. Estos registros actualizados pueden extenderse a lo largo de la historia de meses. Los registros actualizados y nuevos insertar registros puede ser determinado por una actualización de campo de marca de hora (será el día actual en la fecha y hora).

Ahora el problema aquí es : ¿cómo hacer delta/carga incremental de la colmena de la tabla de uso diario de estos registros actualizados.

-> sé que hay una sqoop funcionalidad que permite la importación incremental. Pero, sólo los nuevos importación incremental no es suficiente para nosotros.

Porque –

-> no puedo insertar directamente estos registros (usando insert into) en la colmena de la tabla, ya que se traducirá en registros duplicados (registros actualizados).

-> del Mismo modo que no puedo usar insertar sobrescribir declaración como estos son sólo actualizar e insertar registros que abarca múltiples mes. Insertar sobrescribir va a eliminar expedientes anteriores.

Por supuesto, la opción más sencilla es obtener datos completos utilizando sqoop a diario, pero no queremos hacerlo como el volumen de datos es grande.

Así que , básicamente queremos cargar completamente sólo las particiones para el cual hemos recibido la actualización/insertar registros.

Estamos abiertos a explorar la opción de la colmena o sqoop final. Puede usted por favor háganoslo saber?

Gracias de antemano.

InformationsquelleAutor jigarshah | 2014-06-12

4 Comentarios

  1. 2

    Actualizaciones son un difícil problema para cualquier Subárbol del sistema.

    Un enfoque típico es un proceso de dos pasos

    1. Insertar los datos que ha cambiado en una tabla. Como se dijo, esto hará que se duplica cuando las filas se actualizan.
    2. Periódicamente sobrescribir una segunda tabla con «de-duplicar» los datos de la primera tabla.

    El segundo paso es potencialmente doloroso, pero no hay realmente ninguna manera alrededor de ella. En algún nivel, usted tiene que ser la sobreescritura, ya que la Colmena no hacer en el lugar de la actualización. Según sus datos, usted puede ser capaz de partición de las tablas hábilmente suficiente para evitar completo sobrescribe, aunque. Por ejemplo, si el paso 1 sólo se inserta en un puñado de particiones, sólo las particiones deben ser sobrescrito en la segunda tabla.

    También, dependiendo del patrón de acceso, puede hacer que sentido tiene la segunda «de duplicados de la tabla» ser un punto de vista y no se materializan en absoluto. Normalmente, esto sólo retrasa el dolor al momento de la consulta, aunque.

    La única otra manera alrededor de este que he visto es el uso de un muy personalizado formato de entrada y salida. En lugar de explicar todo, usted puede leer sobre él aquí: http://pkghosh.wordpress.com/2012/07/08/making-hive-squawk-like-a-real-database/

    Owen O’Malley también ha estado trabajando en la adición de una versión de esta idea estándar de la Colmena, pero que aún está en desarrollo: https://issues.apache.org/jira/browse/HIVE-5317

  2. 1

    Puede utilizar directa Reducir el Mapa enfoque para la masiva inserción, actualización y eliminación. Los detalles están aquí. Esencialmente, se trata de una integración y operación de compactación. Un secundario de clasificación que se realiza en el sello de tiempo o secuencia de campo, ya sea en el registro o codificada en HDFS nombres de archivo. La última versión de un registro del reductor lado unirse se emite como salida.

    https://pkghosh.wordpress.com/2015/04/26/bulk-insert-update-and-delete-in-hadoop-data-lake/

  3. 0

    Tuvimos bastante problemas similares inserción masiva de datos en nuestro datalake.
    Ya no estábamos en el control de los datos que hemos tenido un tiempo difícil mantener el lago limpio de duplicados.
    Aviso esto no es acerca de la actualización de los registros de la colmena, pero trata de evitar las duplicaciones del mismo registro otra vez.

    He creado un cerdo de script para esta tarea:

    CODATA = COGROUP HISTORICAL_DATA BY (key_col_1, key_col_2, ...),
                     DAILY_DATA_DISTINCT BY (key_col_1, key_col_2, ...);
    CODATA_FILTERED = FILTER CODATA BY IsEmpty(HISTORICAL_DATA);
    SET_DIFFERENCE = FOREACH CODATA_FILTERED GENERATE FLATTEN($2);
    DUMMY = FILTER DAILY_DATA_DISTINCT BY $0=='';
    DAILY_NEW_DATA = UNION DUMMY, SET_DIFFERENCE;
    

    Se construye el conjunto de la diferencia.
    Apache DataFu SetDifference hace lo mismo, pero no fueron capaces de utilizar inhouse.

Dejar respuesta

Please enter your comment!
Please enter your name here