"El reto del billón de filas": Hacks para procesar más de 12GB en 2 segundos |

Поділитися
Вставка
  • Опубліковано 22 січ 2024
  • Recientemente se ha propuesto un reto a la comunidad: Procesar lo más rápido que puedas 1.000 millones de registros ("1 billion" en inglés). El reto se conoce como "One Billion Row Challenge (1BRC)", y consiste en cargar el dataset de mediciones de temperatura para determinar la medición mínima, media, y máxima de cada ciudad.
    Cada línea consiste en una tupla de ciudad y temperatura separada por ";" como por ejemplo: "Hamburg;12.0". A tener en cuenta:
    - Hay 413 ciudades
    - La longitud de los nombres de ciudad varían entre 3 y 26 bytes
    - Las temperaturas pueden ser negativas, 1 o 2 enteros, y siempre con 1 decimal
    El reto se propuso inicialmente en la comunidad Java, pero han salido implementaciones en otros lenguajes de programación como Rust o C#.
    En el directo analizaremos algunas de estas soluciones junto con Antón Rodriguez, Principal Software Engineer en New Relic, con más de 10 años de experiencia en el ecosistema Java. Ya estuvo en el canal mostrando las novedades de Java.
    ﹤🍍﹥ Enlaces
    ├ 🎥 Suscríbete: ua-cam.com/users/CodelyTV?sub_co...
    ├ 🔖 Cursos: bit.ly/cursos-codely
    ├ 🔗 Material relacionado:
    | ├ • Novedades Java
    | ├ Optimizaciones JVM: docs.google.com/forms/d/e/1FA...
    | ├ Post original (Java): www.morling.dev/blog/one-bill...
    | ├ Repo principal: github.com/gunnarmorling/1brc
    | ├ Post .Net (C#): hotforknowledge.com/2024/01/1...
    | ├ Post Rust: curiouscoding.nl/posts/1brc/
    | └ Otros lenguajes: github.com/gunnarmorling/1brc...
    └ 👋 Redes sociales:
    ├ / codelytv
    ├ / antonmry
    ├ / javiercane
    ├ / codelytv
    └ / codelytv
  • Наука та технологія

КОМЕНТАРІ • 51

  • @esarmiento7
    @esarmiento7 4 місяці тому +14

    Alguna empresa necesitaba esto gratis y creo el reto.

  • @javierpena1455
    @javierpena1455 4 місяці тому +11

    Pedazo de directo! muy muy interesante y muy bien guiado. Gracias!

  • @LeonardoHernandezHH
    @LeonardoHernandezHH 4 місяці тому +8

    Este tema ha sido de los mejores que he visto en el canal. Muchas gracias!!!

  • @carlospaz3277
    @carlospaz3277 3 місяці тому +2

    Me ha encantado el video super recomendable me di 3 dias para ver este video pausadamente y tomando notas y jugando con todas las funcionalidades, muchas gracias profesor, que buen contenido.
    Sería buenisimo tener sugerencia a otro video para aprender a desplegar un proyecto inicalmente creado con XAAMP .

  • @josergdev
    @josergdev 4 місяці тому +17

    12:54 porque el TreeMap ordena el mapa por key (ciudad) automáticamente que es un requisito del challenge. HashMap no implementa SortedMap.

  • @pablob3871
    @pablob3871 4 місяці тому +3

    Que buen video ! se agradece muchísimo, seguramente haya tweaks adaptables al trabajo diario en las primeras soluciones(que lograron recortar el tiempo notablemente) utilizando las apis que nos ofrece Java

  • @felixgomezlopez
    @felixgomezlopez 4 місяці тому +3

    Genial el reto y las explicaciones. Grande Antón!

  • @hugoespinosa3492
    @hugoespinosa3492 Місяць тому

    Anton el Scaloni de los datos!!!
    Gracias por compartir estos vídeos.

  • @dryant
    @dryant 4 місяці тому +1

    Madre mía 😳!! Genial!!! Enhorabuena Antón!!

  • @RamiroAsincrono
    @RamiroAsincrono 3 місяці тому +1

    Excelente contenido!
    Conociendo un mundo nuevo para mí

  •  3 місяці тому

    Qué gran transmisión! Saludos desde Nicaragua!

  • @sairiopena1073
    @sairiopena1073 4 місяці тому +2

    temazo este..de los mejores videos

  • @boldaslove7265
    @boldaslove7265 3 місяці тому

    Muy interesante el análisis de este reto! Haced más como este

  • @alfonsolima6511
    @alfonsolima6511 4 місяці тому

    Que buen video! muchas gracias

  • @giovl90
    @giovl90 4 місяці тому

    Muy interesante, gracias !

  • @andypanko2588
    @andypanko2588 3 місяці тому

    Felicidades, para guardar enlace y verlo cada x tiempo, un saludo cracks

  • @jlgarnec
    @jlgarnec 4 місяці тому

    Excelente reto.

  • @jlgarnec
    @jlgarnec 4 місяці тому

    Gracias!

  • @adolfoajuz
    @adolfoajuz 4 місяці тому

    Algo me decia que seria un millardo y no un billon, pero igualmente excelente tema.

  • @blancoserranoj
    @blancoserranoj 3 місяці тому

    Excelente !!
    Cuando hacen uno en spark con lecturas desde bases relacionales ?

  • @kluih9872
    @kluih9872 4 місяці тому

    Tremendo

  • @lluismf
    @lluismf 4 місяці тому +1

    El Treemap es para imprimir los resultados por orden alfabético, que es uno de los requerimientos.

  • @user-me8sq9oj6i
    @user-me8sq9oj6i 4 місяці тому

    Tarde y fuera de tiempo pero el Trremap lo usaban porque te garantiza el orden y una de las premisas es que el resultado este ordenado alfabeticamente

  • @Daniel-gt7lx
    @Daniel-gt7lx 3 місяці тому

    Le pondre a ver esto a toda mi empresa :p

  • @TheMikeN16
    @TheMikeN16 2 місяці тому

    Mil millones en 2 segundos, mind blow.

  • @elruchal
    @elruchal 4 місяці тому

    umnmmm hay que echarle un vistazo para hacerlo con AWK ;)

  • @JuanMartinRuiz
    @JuanMartinRuiz Місяць тому

    con java 😂

  • @NelsonboadaMovil
    @NelsonboadaMovil 3 місяці тому

    🙂 Con Java puedes ir rápido, pero con Unsafe puedes usar a Java como el que abre la puerta, y así puedes ir mas rápido

  • @javierfreireriobo
    @javierfreireriobo 4 місяці тому +1

    El TreeMap es para imprimir los resultados ordenados alfabeticamente

  • @joaquinperez8338
    @joaquinperez8338 4 місяці тому

    Un billón es 10⁹ o 10¹² ?
    En que formato está el fichero ?
    csv txt o cual ?

    • @CodelyTV
      @CodelyTV  4 місяці тому

      Tienes toda la info en el enlace de la descripción 😊

  • @wilkinperdomo580
    @wilkinperdomo580 4 місяці тому

    En la empresa donde laboro usar Parallel, es lo ultimo que se debe de usar, realmente esta prohibido usarlo. Nos basamos a puros Index u otro Hint.
    Tratare de hacer el reto.

  • @jorgegarcia7130
    @jorgegarcia7130 3 місяці тому

    Te lo hago en jscript en medio segundo!

  • @victormiranda7654
    @victormiranda7654 3 місяці тому

    Me parece que el treemap mantiene el orden

  • @jorgegarcia7130
    @jorgegarcia7130 3 місяці тому +1

    Se puede usar la GPU para calcularlo? te lo bajo a milisegundos

  • @andresfcuellarc
    @andresfcuellarc 3 місяці тому

    Muy buen caso! Genial @CodelyTV

  • @edgaraguilarmota1714
    @edgaraguilarmota1714 3 місяці тому

    Hola soy aficionado a la tecnología, y yo trabajo actualmente en empresas privadas para la banca, me ha tocado procesar grandes cantidades de información, y este tema es super interesante. Voy viendo el video mas de 4 veces, no puedo creer que haya tanta información. Saludos

  • @ratmiltorres24
    @ratmiltorres24 3 місяці тому

    Treemap capaz y sea más rápido la búsqueda que con un hash.

  • @b14ckh4wk3
    @b14ckh4wk3 4 місяці тому

    Yo usaría un binary tree y luego haría traversal

  • @panopticonvoid
    @panopticonvoid 4 місяці тому +6

    Para optimizar java lo que fue efectivo es sacar el corazón de java (no vm no GC), lo interesante de los resultados, considerando la masiva diferencia, es que no es importante ser performante si está sobre una vm con GC sino simplemente no escribir aberraciones.

  • @fullmetaldg
    @fullmetaldg 3 місяці тому

    Está igual a Lionel Scaloni

    • @verdepanza
      @verdepanza 3 місяці тому

      Tremendo el nivel de conocimientos de Java y de resolver problemas con Messi.

  • @CarlosWolfram
    @CarlosWolfram 3 місяці тому

    hace verdad el que no hay pc lentas si no codigo mal optimizado :u

  • @NWqwerty
    @NWqwerty 4 місяці тому +1

    porque la gente que programa en java son siempre tan buenos :/ me cae gordo java o sea soy un caca, eso si me hizo reir lo de programar en C pero estando en Java cuando ponen unsafe, añadiendo que estan programndo en C sin tener ni idea de coma referenciar punteros y todo eso que se hace con C en memoria o los programadores de java tambien saben hacer eso? :o igual rust tambien tiene lo mismo

    • @aquavxi6431
      @aquavxi6431 4 місяці тому

      Esto es Java avanzado.

    • @elruchal
      @elruchal 4 місяці тому +1

      Yo por ejemplo empecé a estudiar Java en el 2002:
      Aún no existía el proyecto Eclipse. Sólo había algún entorno de desarrollo de pago que un mortal no podía permitirse.
      Compilábamos en línea de comandos.
      Tampoco existía Hibernate (por supuesto, tampoco stackoverflow).
      Acababan de aparecer los JSP (mezcla de html + Java, como una especie de php..)
      La especificación de servlets estaba todavía, como quien dice, en pañales.
      XML tenía 4 años y JAXP acababa de salir como quien dice..
      El GC no funcionaba como ahora
      La especificación HTML era todavía 4.0.1, CSS llevaba como quien dice 2 o 3 años fucionando y empezaba en ese momento a ser algo común a los navegadores (Internet explorer 5.. Netscape 4...)
      ;)
      ¿He usado punteros? Claro. La mayoría que hemos programado en Java y lo conocemos a bajo nivel y hace muchos años, hemos programado C o C++ o incluso nos ha tocado convertir cientos de miles de líneas de código C a Java (~450K). De hecho yo para estas movidas de extracciones y cruces de datos, ordenaciones, etc. utilizo lenguajes de la familia AWK que están orientados a estas tareas y son especialmente rápidos y sencillos de codificar, además de ser interpretados en línea de comandos por lo que no requiere compilar ni máquinas virtuales :) . De hecho, nuestro curro era montar pequeños scripts de AWK para poder realizar extracciones y cruces masivos de datos y no penalizar las BDD ;)
      Java tiene sus cosas buenas y sus cosas malas. Es normal que si has programado C (y además bien), te caiga un poco gordo Java. De todos modos, bien utilizado, es muy potente y fiable, sobre todo desde unos años hasta ahora.
      PD: al respecto de "los programadores JAVA": Todos somos programadores, sólo que unos conocemos unos lenguajes u otros, lo que implica que conocemos diferentes herramientas y modos de hacer las cosas. Conforme más lenguajes conoces, más herramientas y modos de hacer las cosas que has visto, y por tanto, que puedes suponer/investigar cuando necesitas llegar a estas cuestiones. :) No le tengas paquete a Java, quizá un día descubres que hace mejor lo que hacías en C y simplemente no le diste la oportunidad :)

  • @germannunez490
    @germannunez490 3 місяці тому

    Interesante reto, saludos desde nicaragua.
    consejo: mejoren el audio, se escucha horrible el de @antonmry

  • @Josegarcia-xw3ci
    @Josegarcia-xw3ci 3 місяці тому

    Que pecado que cambiasen de máquina. 32 Corea, implica también una memoria caché de diferente arquitectura, topologías y tamaños. Ya no estamos viendo mejoras bajo el mismo patrón de comportamiento.

  • @user-me8sq9oj6i
    @user-me8sq9oj6i 4 місяці тому

    Tarde y fuera de tiempo pero el Trremap lo usaban porque te garantiza el orden y una de las premisas es que el resultado este ordenado alfabeticamente