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

  Переглядів 56,959

CodelyTV - Redescubre la programación

CodelyTV - Redescubre la programación

3 місяці тому

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: ukposts.info?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 3 місяці тому
Alguna empresa necesitaba esto gratis y creo el reto.
@josergdev
@josergdev 3 місяці тому
12:54 porque el TreeMap ordena el mapa por key (ciudad) automáticamente que es un requisito del challenge. HashMap no implementa SortedMap.
@javierpena1455
@javierpena1455 3 місяці тому
Pedazo de directo! muy muy interesante y muy bien guiado. Gracias!
@LeonardoHernandezHH
@LeonardoHernandezHH 3 місяці тому
Este tema ha sido de los mejores que he visto en el canal. Muchas gracias!!!
@carlospaz3277
@carlospaz3277 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 .
@felixgomezlopez
@felixgomezlopez 3 місяці тому
Genial el reto y las explicaciones. Grande Antón!
@pablob3871
@pablob3871 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
@dryant
@dryant 3 місяці тому
Madre mía 😳!! Genial!!! Enhorabuena Antón!!
2 місяці тому
Qué gran transmisión! Saludos desde Nicaragua!
@sairiopena1073
@sairiopena1073 3 місяці тому
temazo este..de los mejores videos
@RamiroAsincrono
@RamiroAsincrono 2 місяці тому
Excelente contenido! Conociendo un mundo nuevo para mí
@boldaslove7265
@boldaslove7265 2 місяці тому
Muy interesante el análisis de este reto! Haced más como este
@alfonsolima6511
@alfonsolima6511 3 місяці тому
Que buen video! muchas gracias
@giovl90
@giovl90 3 місяці тому
Muy interesante, gracias !
@hugoespinosa3492
@hugoespinosa3492 21 день тому
Anton el Scaloni de los datos!!! Gracias por compartir estos vídeos.
@jlgarnec
@jlgarnec 3 місяці тому
Excelente reto.
@andypanko2588
@andypanko2588 2 місяці тому
Felicidades, para guardar enlace y verlo cada x tiempo, un saludo cracks
@blancoserranoj
@blancoserranoj 2 місяці тому
Excelente !! Cuando hacen uno en spark con lecturas desde bases relacionales ?
@jlgarnec
@jlgarnec 3 місяці тому
Gracias!
@kluih9872
@kluih9872 3 місяці тому
Tremendo
@adolfoajuz
@adolfoajuz 3 місяці тому
Algo me decia que seria un millardo y no un billon, pero igualmente excelente tema.
@lluismf
@lluismf 3 місяці тому
El Treemap es para imprimir los resultados por orden alfabético, que es uno de los requerimientos.
@user-me8sq9oj6i
@user-me8sq9oj6i 3 місяці тому
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
@elruchal
@elruchal 3 місяці тому
umnmmm hay que echarle un vistazo para hacerlo con AWK ;)
@Daniel-gt7lx
@Daniel-gt7lx 2 місяці тому
Le pondre a ver esto a toda mi empresa :p
@JuanMartinRuiz
@JuanMartinRuiz 25 днів тому
con java 😂
@TheMikeN16
@TheMikeN16 2 місяці тому
Mil millones en 2 segundos, mind blow.
@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
@edgaraguilarmota1714
@edgaraguilarmota1714 2 місяці тому
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
@wilkinperdomo580
@wilkinperdomo580 3 місяці тому
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.
@javierfreireriobo
@javierfreireriobo 3 місяці тому
El TreeMap es para imprimir los resultados ordenados alfabeticamente
@victormiranda7654
@victormiranda7654 2 місяці тому
Me parece que el treemap mantiene el orden
@jorgegarcia7130
@jorgegarcia7130 2 місяці тому
Te lo hago en jscript en medio segundo!
@joaquinperez8338
@joaquinperez8338 3 місяці тому
Un billón es 10⁹ o 10¹² ? En que formato está el fichero ? csv txt o cual ?
@CodelyTV
@CodelyTV 3 місяці тому
Tienes toda la info en el enlace de la descripción 😊
@panopticonvoid
@panopticonvoid 3 місяці тому
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.
@b14ckh4wk3
@b14ckh4wk3 3 місяці тому
Yo usaría un binary tree y luego haría traversal
@ratmiltorres24
@ratmiltorres24 3 місяці тому
Treemap capaz y sea más rápido la búsqueda que con un hash.
@jorgegarcia7130
@jorgegarcia7130 2 місяці тому
Se puede usar la GPU para calcularlo? te lo bajo a milisegundos
@RicardoIturra-mb3qs
@RicardoIturra-mb3qs 25 днів тому
😂
@fullmetaldg
@fullmetaldg 2 місяці тому
Está igual a Lionel Scaloni
@verdepanza
@verdepanza 2 місяці тому
Tremendo el nivel de conocimientos de Java y de resolver problemas con Messi.
@CarlosWolfram
@CarlosWolfram 2 місяці тому
hace verdad el que no hay pc lentas si no codigo mal optimizado :u
@NWqwerty
@NWqwerty 3 місяці тому
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 3 місяці тому
Esto es Java avanzado.
@elruchal
@elruchal 3 місяці тому
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 :)
@andresfcuellarc
@andresfcuellarc 2 місяці тому
Muy buen caso! Genial @CodelyTV
@germannunez490
@germannunez490 2 місяці тому
Interesante reto, saludos desde nicaragua. consejo: mejoren el audio, se escucha horrible el de @antonmry
@Josegarcia-xw3ci
@Josegarcia-xw3ci 2 місяці тому
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 3 місяці тому
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
RabbitMQ vs Kafka - ¿Cuál escoger?
27:03
CodelyTV - Redescubre la programación
Переглядів 28 тис.
Por qué aprender Arquitectura de Software | #laFunción 9x10
53:06
CodelyTV - Redescubre la programación
Переглядів 54 тис.
Піхотинець - про рутину на фронті
00:46
Суспільне Новини
Переглядів 1,1 млн
EL PROYECTO SECRETO de FACEBOOK para ESPIAR tu TELÉFONO
17:50
Pelado Nerd
Переглядів 34 тис.
Por qué generar los IDs desde el Frontend y No desde la Base de Datos: FAQs | #lafunción 9x3
1:04:46
CodelyTV - Redescubre la programación
Переглядів 14 тис.
The One Billion Row Challenge - .NET Edition | Merge Conflict ep. 392
38:46
Merge Conflict Podcast
Переглядів 1 тис.
No generes los IDs desde la Base de Datos, genéralos desde el Frontend
13:10
CodelyTV - Redescubre la programación
Переглядів 31 тис.
Novedades en GraalVM: ¿La JVM definitiva para Java? | #laFunción 9x7
55:00
CodelyTV - Redescubre la programación
Переглядів 4,9 тис.
Lo que necesitas saber de IA como Developer: Modelos vs Ollama vs LangChain
16:57
CodelyTV - Redescubre la programación
Переглядів 11 тис.
Aprende Ollama en menos de 8 minutos!
7:57
CodelyTV - Redescubre la programación
Переглядів 6 тис.
Qué es la Consistencia Eventual | Diseño de Sistemas
16:58
CodelyTV - Redescubre la programación
Переглядів 9 тис.
Cómo Adevinta gestiona +38 MILONES de EVENTOS por HORA | #laFunción 9x14
1:00:49
CodelyTV - Redescubre la programación
Переглядів 12 тис.
Phone charger explosion
0:43
_vector_
Переглядів 48 млн
📱 SAMSUNG, ЧТО С ЛИЦОМ? 🤡
0:46
Яблочный Маньяк
Переглядів 553 тис.
How Neuralink Works 🧠
0:28
Zack D. Films
Переглядів 26 млн
Apple Event - May 7
38:22
Apple
Переглядів 6 млн
Fiber kablo
0:15
Elektrik-Elektronik
Переглядів 1,2 млн
Phone charger explosion
0:43
_vector_
Переглядів 48 млн