Escriba 1 millón de filas de CSV en S3 por lotes

Estoy tratando de construir un archivo CSV muy grande en S3.

  • Quiero construir este archivo en S3
  • Quiero agregar filas a este archivo en lotes.
  • El número de filas puede estar entre 10k y 1M
  • El tamaño de cada lote podría ser <5Mb (por lo que la carga de varias partes no es factible)

¿Cuál sería la forma correcta de lograr algo como esto?

Respuesta 1

Tradicionalmente, en el procesamiento de Big Data ("Data Lakes"), la información relacionada con una sola tabla se almacena en un directorio en lugar de un solo archivo . Entonces, agregar información a una tabla es tan simple como agregar otro archivo a un directorio. Todos los archivos dentro del directorio deberán tener el mismo esquema (como columnas CSV o datos JSON).

El directorio de archivos se puede usar con herramientas como:

  • Spark, Hive y Presto en Hadoop
  • Atenea amazónica
  • Espectro de Amazon Redshift

Una ventaja de este método es que los sistemas anteriores pueden procesar múltiples archivos en paralelo en lugar de estar restringidos a procesar un solo archivo en un método de subproceso único.

También es común comprimir los archivos utilizando tecnologías como gzip . Esto reduce los requisitos de almacenamiento y agiliza la lectura de datos del disco. Agregar archivos adicionales es fácil (solo agregue otrocsv.gz archivo) en lugar de tener que descomprimir, agregar y volver a comprimir un archivo.

Línea de fondo: sería aconsejable repensar sus requisitos para "un gran gran archivo CSV".

Respuesta: 2

'Un archivo grande' no va a funcionar para usted: no puede agregar filas a un archivo s3, sin descargar primero el archivo completo, agregar las filas y luego cargar el nuevo archivo sobre el anterior, para archivos pequeños , funcionará, pero a medida que el archivo crezca, el ancho de banda y el procesamiento aumentarán geométricamente en usted, y puede volverse muy lento y posiblemente costoso.

Es mejor refactorizar su diseño para que funcione con muchos archivos pequeños en lugar de uno grande.

Respuesta: 3

Logré crear un método que carga un archivo en un directorio. ¿Cómo tendría que cambiar esto para poder copiar un archivo de /123.html a /en/123.html a través de JSch? public void upFile (fuente de cadena, ...

Desde hace unos días y de la nada, a veces recibo este error NullPointException: Excepción: java.lang.NullPointerException - Intento de invocar el método virtual 'boolean java.util.ArrayList ...

¿Cómo ejecuto el http://www.jsptut.com/Forms.jsp? Estoy usando Geany y no estoy acostumbrado a usar Java. Los jsp simples antes de esta página no fueron un problema.

Necesito separar los nombres de los números separados por comas en el archivo de texto y agregarlos en ArrayLists separadas. Tengo un método para agregar cada nueva línea en una sola ArrayList. Aquí está ...