Translate

jueves, 17 de mayo de 2018

Apache Avro


Apache Avro es un sistema de serialización de datos.

Avro proporciona:
  • Estructuras de datos ricas
  • Un formato de datos binario compacto, rápido.
  • Un archivo contenedor, para almacenar datos persistentes.
  • Llamada a procedimiento remoto (RPC).
  • Integración simple con lenguajes dinámicos. No se requiere la generación de código para leer o escribir archivos de datos ni para usar o implementar protocolos RPC. 
Avro se basa en esquemas. Cuando se leen datos Avro, el esquema utilizado al escribirlo siempre está presente. Esto permite que cada dato se escriba sin gastos generales por valor, lo que hace que la serialización sea rápida y pequeña. Esto también facilita el uso con lenguajes dinámicos de scripting, ya que los datos, junto con su esquema, son completamente autodescriptivos.
Cuando los datos de Avro se almacenan en un archivo, su esquema se almacena con él, de modo que los archivos pueden ser procesados posteriormente por cualquier programa. Si el programa que lee los datos espera un esquema diferente, esto se puede resolver fácilmente, ya que ambos esquemas están presentes.

Cuando se usa Avro en RPC, el cliente y el servidor intercambian esquemas en el enlace de conexión. (Esto se puede optimizar para que, en la mayoría de las llamadas, no se transmitan realmente esquemas.) Dado que tanto el cliente como el servidor tienen el esquema completo del otro, la correspondencia entre los mismos campos con nombre, campos faltantes, campos adicionales, etc. puede resolverse fácilmente .

Los esquemas Avro se definen con JSON. Esto facilita la implementación en Lenguajes que ya tienen bibliotecas JSON. Avro proporciona una funcionalidad similar a sistemas como Thrift, Protocol Buffers, etc. Avro difiere de estos sistemas en los siguientes aspectos fundamentales.

  • Tipado dinámico: Avro no requiere que se genere ese código. Los datos siempre van acompañados de un esquema que permite el procesamiento completo de esos datos sin generación de códigos, tipos de datos estáticos, etc. Esto facilita la construcción de sistemas e lenguajes genéricos de procesamiento de datos.
  • Datos no etiquetados: dado que el esquema está presente cuando se leen los datos, es necesario codificar considerablemente menos información de tipo con los datos, lo que da como resultado un tamaño de serialización más pequeño.

No hay identificadores de campo asignados manualmente: cuando un esquema cambia, tanto el esquema antiguo como el nuevo siempre están presentes cuando se procesan los datos, por lo que las diferencias se pueden resolver simbólicamente, usando los nombres de los campos.


Vue Mastery

Quiero compartir este mail sobre la pagina Vue Mastery dado que hay muchos recursos del framework Vue.js, y nada más ...

We have brand new content for you.Can't see images? Click here...
The other day someone asked me:  
"How in the world can you afford to give the Vue Community so much free content?"
There is the free Vue Intro course, free VueConf videos, free Vue cheat sheet, and the free official Vue News Podcast.  There's a lot.
Well, the day has come where I hope that you might help us (and the Vue.js project itself) with a monthly subscription to make it all sustainable.  
0

What do you get?

First and foremost, $5 of your monthly subscription we give directly to the core Vue.js project.
Secondly, we have a plan to release one video a week to help on your path to Vue Mastery, and I just released the first lesson on myAdvanced Components course (see below).  Only subscribers get access to this content.
Thirdly, you help us continue to be able to afford to do the free things we do for the community (see above).
Click Here to Get Started

Advanced Components Course

In this course it is my goal to help you get better at using the full functionality of Vue, scaling and debugging your applications, extending Vue core functionality, and perhaps even contributing to the Vue project itself.  

We start by uncovering the secrets of Vue's reactivity system.  
Subscribe & Watch Video 🎥
0

Newest Features in Vue + Q&A with Evan You

Join 400+ people who have signed up for a free guided tour of the newest features of Vue.js and get your questions answered by the man who created it, Evan You.
0

17 VueConf Lightning Talks

Last week we polished and released all 17 lightning talks from VueConf US.  These are all free.  From Adam Jahr talking about 5 Libraries you should know about, to Sean "Webpack" Larkin talking about Code Splitting patterns in Vue, there's something here for everyone.
We even had Derick Sozo watch them all and write up an article on5 lightning talks from VueConf.US you can't miss.  Yup, free.
0

🎧 Oh, and a new Podcast

Adam and I cover the latest news in the Vue.js community in just 5 minutes, so you can listen in your car, on the train, or when you're washing your cat.  Yup, it's free too. You can listen to it hereOr subscribe to it below.

🍏 Apple Podcasts, 🤖 AndroidStitcher, or RSS

Not going to be paying for a subscription?

Totally understand if you're not in a position to help us out right now, we're still going to be producing lots of free stuff.  Three things you could do instead if you wanted to be nice:
1. Ask your boss to pay for a subscription, and get us in touch. 
2. Help us promote! Forward this email or retweet this tweet.
3. Respond to this email and let us know what we could do to get you to subscribe.
0
Thanks for reading!
Gregg Pollack
Founder of Vue Mastery
Vue Mastery
You received this email because you wanted to start your journey to Vue Mastery.  If you aren't interested in learning Vue, feel free to:
MailerLite

martes, 15 de mayo de 2018

Machine Learning Yearning

Como les conté en un post anterior. Andrew Ng esta sacando un libro sobre machine learning.

Me llego otro mail del amigo Andrew Ng sobre su nuevo libro:


View this email in your browser

AI is the new electricity

Machine Learning Yearning

Dear friends,
Last week, we learned about specific techniques to address avoidable bias and variance. This week’s chapters focus on learning curves. They are an even more informative and visual way to help you figure out how much error can be attributed to avoidable bias or variance.

Read this week’s chapters to learn more!
Read Chapters 28-30

In Case You Missed It

I recently spoke with Greylock's Sarah Guo about how industries can leverage AI technology and the impacts of AI on the future workforce.
Listen to the full interview

Pun of the Week

If you have a great AI pun, tweet it to me @AndrewYNg using #AIpun. I'll share my favorite in next week's email!

Catch up on Machine Learning Yearning

Miss last week's email? Access all chapters below:
 
Ch. 1 - 14
Ch. 15 - 19
Ch. 20 - 22
Ch. 23 - 27
Copyright © 2018 Andrew Ng, All rights reserved.
You are receiving this because you opted in to receiving emails about Andrew's upcoming book.

Our mailing address is:
Andrew Ng
353 Serra Mall
StanfordCA 94305

Add us to your address book

domingo, 13 de mayo de 2018

Dstream


Dstream es la abstracción básica en Spark Streaming y representa una stream continuo de datos.

DStream se puede crear a partir de flujos de datos de entrada procedentes de fuentes como Kafka, Flume y Kinesis, o aplicando operaciones en otros DStream. Internamente, un DStream se representa como una secuencia de objetos RDD.

Similar a RDD el DStream soporta:

  • map 
  • flatMap 
  • filter 
  • count 
  • reduce 
  • countByValue 
  • reduceByKey 
  • join 
  • updateStateByKey 

jueves, 10 de mayo de 2018

Apache Spark Streaming



Con el procesamiento de datos en streaming podemos analizar los datos en tiempo real, lo cual es muy útil en muchas situaciones. Apache Spark provee una librería para procesar streaming, que como no era necesarío un nombre difícil o original lo bautizaron Apache Spark Streaming.

El procesamiento de streaming se utiliza para analizar información que viene de sensores, iot, busquedas, logs de paginas web, el trafico a servidores, etc. Ejemplos de su uso podrian ser: monitorización de servidores o del comportamiento de usuarios en paginas web, etc.

Spark Streaming es una extensión de Apache Spark API y como ya digimos Apache Spark Streaming hace facil la creación de procesos tolerante a fallos para procesar información en tiempo real.

Desde la versión 2.0, Spark streaming soporta una nueva librería de streaming llamada 
Structured Streaming, el cual ofrece un procesamiento de streaming escalable y tolerante a fallos basado en Spark SQL. Podemos utilizar dataset and la Api de dataframe en Scala, Java, Python o R para escribir agregaciones de streamings. Structured Streaming provee un camino para el procesamiento sin que tengamos que razonar mucho sobre el procesamiento.

Spark Streaming funciona dividiendo la transmisión en pequeñas porciones de datos  (llamados micro-batches) en un intervalo predefinido (N segundos) y luego convierte cada micro-batch en un RDD. Nosotros podemos procesar estos RDD con las operaciones : map , reduce , reduceByKey , join , y window. Los resultados de estas operaciones RDD se devuelven en lotes. Por lo general, almacenamos estos resultados en un almacén de datos para un análisis posterior, para generar informes, o para enviar alertas basadas en eventos.

Es importante configurar correctamente el intervalo de tiempo para Spark Streaming, en función del caso de uso y los requisitos de procesamiento de datos. Si el valor de N es demasiado bajo, entonces los micropaquetes no tendrán suficientes datos para dar resultados significativos durante el análisis.

Los datos de streaming pueden ser procesados desde diferentes fuentes :
  • Kafka,
  • Flume,
  • Twitter,
  •  ZeroMQ,
  •  Amazon’s Kinesis, and
  •  TCP sockets
Otra ventaja de utilizar Apache Spark es que podemos combinar procesamiento batch con procesamiento streaming. También podemos utilizar otros subproyecto somo Spark mlib o graphX.


martes, 8 de mayo de 2018

UNION vs UNION ALL


Principalmente el problema es que ambos tienen funcionalidades distintas. El UNION y el UNION ALL parecen funcionar igual pero tienen una pequeña diferencia. El UNION descarta los resultados en común entre los dos SELECT, en cambio, el UNION ALL no hace ningún tipo de verificación.

Por este motivo, el UNION ALL es más eficiente que el UNION.

Si sabemos que las 2 consultas a unir no van a tener repetidos es buena práctica usar el UNION ALL

LAG y LEAD en Oracle

Tenemos que relacionar un registro con su anterior o su posterior en una sola sentencia y devolver ese registro también.

Estas dos funciones “LAG y LEAD” lo permiten sin tener que realizar una self join.

LAG() devuelve el valor de la anterior fila y LEAD() el valor de la siguiente fila.

SELECT DNI,
LEAD(DNI) OVER (ORDER BY DNI) POSTERIOR,
LAG(DNI) OVER (ORDER BY DNI) ANTERIOR
FROM PRUEBA;

DNI     POSTERIOR    ANTERIOR         
0001          0002                                 
0002          0003               0001             
0003          0004               0002             
0004          0005               0003             
0005          0006               0004             
0006          0007               0005

domingo, 6 de mayo de 2018

Probando Ubuntu Budgie 18

Salio Ubuntu 18, la versión más esperada de ubuntu. Ya son conocidos las nuevas propiedades del sistema operativo. Justo al empezar a usar el sistema te encontrarás con una nueva pantalla de bienvenida que te guiará por algunas de las novedades. Casi al final te presentará con algunas opciones de software que puedes instalar en un click.

A mi entender la mejor característica es la librería de aplicaciones snap. Podemos instalar con un solo click : Spotify, Slack, Skype, Telegram, Steam, y hasta el mismo tema de la comunidad que cambia la apariencia por una más moderna, pueden instalarse de la forma más sencilla posible.

Un sabor nuevo es Ubuntu Budgie que es una distribución oficial del proyecto Ubuntu, que utiliza el entorno de escritorio Budgie, basado en GNOME. Esta distribución ofrece una interfaz sencilla y fluida, que tiene un bajo consumo de recursos.

Y me sentí obligado a probarla:






Dejo video:


Dejo link: https://ubuntubudgie.org/