Translate

jueves, 17 de mayo de 2018

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/

Ejemplo de Apache Spark Sql - parte 2

En el ejemplo anterior, el esquema se deduce utilizando reflexión. También podemos especificar mediante programación el esquema del dataset. Esto es útil cuando las clases personalizadas no se pueden definir con anticipación porque la estructura de los datos está codificada en una cadena.

El siguiente ejemplo de código muestra cómo especificar el esquema utilizando las clases de tipo de datos StructType, StringType y StructField.

//
// Programmatically Specifying the Schema
//
// Create SQLContext from the existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

// Create an RDD
val rddCustomers = sc.textFile(“/home/emanuel/eje.csv”)

// The schema is encoded in a string
val schemaString = “customer_id name city state zip_code”

// Import Spark SQL data types and Row.
import org.apache.spark.sql._
import org.apache.spark.sql.types._;

// Generate the schema based on the string of schema
val schema = StructType(schemaString.split(“ “).map(fieldName => StructField(fieldName, StringType, true)))

// Convert records of the RDD (rddCustomers) to Rows.
val rowRDD = rddCustomers.map(_.split(“,”)).map(p => Row(p(0).trim,p(1),p(2),p(3),p(4)))

// Apply the schema to the RDD.
val dfCustomers = sqlContext.createDataFrame(rowRDD, schema)

// Register the DataFrames as a table.
dfCustomers.registerTempTable(“customers”)

// SQL statements can be run by using the sql methodsprovided by sqlContext.
val custNames = sqlContext.sql(“SELECT name FROM customers”)

// The results of SQL queries are DataFrames and support all the normal RDD operations.
// The columns of a row in the result can be accessed by ordinal.
custNames.map(t => “Name: “ + t(0)).collect().foreach(println)

// SQL statements can be run by using the sql methods provided by sqlContext.
val customersByCity = sqlContext.sql(“SELECT name,zip_code FROM customers ORDER BY zip_code”)

// The results of SQL queries are DataFrames and support all the normal RDD operations.
// The columns of a row in the result can be accessed by ordinal.
customersByCity.map(t => t(0) + “,” + t(1)).collect().
foreach(println)

También podemos cargar los datos de otras fuentes de datos como archivos de datos JSON, tablas Hive o incluso tablas de bases de datos relacionales que utilizan la fuente de datos JDBC.
Spark SQL proporciona una agradable interfaz SQL para interactuar con datos que se cargan desde diversas fuentes de datos, utilizando la conocida sintaxis de consulta SQL.
Esto es especialmente útil para miembros de proyectos no técnicos, como analistas de datos y DBA.

Ejemplo de Apache Spark Sql

Para este ejemplo, cargaremos datos de clientes de un archivo de texto y crearemos un objeto DataFrame a partir del conjunto de datos. Entonces podemos ejecutar las funciones de DataFrame como consultas específicas para seleccionar los datos.

Veamos el archivo customers.txt.

100,John Smith, Austin, TX, 78727
200,Joe Johnson, Dallas, TX, 75201
300,Bob Jones, Houston, TX, 77028
400,Andy Davis, San Antonio, TX, 78227
500,James Williams, Austin, TX, 78727

El siguiente código muestra los comandos Spark SQL que podemos ejecutar en la consola del shell Spark.

// Create the SQLContext first from the existing Spark Context
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

// Import statement to implicitly convert an RDD to a DataFrame
import sqlContext.implicits._

// Create a custom class to represent the Customer
case class Customer(customer_id: Int, name: String, city: String, state: String, zip_code: String)

// Create a DataFrame of Customer objects from the data set text file.
val dfCustomers = sc.textFile(“/home/emanuel/eje.csv”).map(_.split(“,”)).map(p => Customer(p(0).trim.toInt, p(1), p(2), p(3), p(4))).toDF()

// Register DataFrame as a table.
dfCustomers.registerTempTable(“customers”)

// Display the content of DataFrame
dfCustomers.show()

// Print the DF schema
dfCustomers.printSchema()

// Select customer name column
dfCustomers.select(“name”).show()

// Select customer name and city columns
dfCustomers.select(“name”, “city”).show()

// Select a customer by id
dfCustomers.filter(dfCustomers(“customer_id”).equalTo(500)).show()

// Count the customers by zip code
dfCustomers.groupBy(“zip_code”).count().show()

Apache Spark Sql - JDBC Data Source


Spark sql contiene un origen de datos jdbc. Con él podemos leer una base de datos relacional. Este enfoque es preferible al uso de JdbcRDD porque el origen de datos devuelve los resultados como un DataFrame que puede procesarse en Spark SQL o mezclarse con datos de otras fuentes de datos.

Veamos un ejemplo:

import org.apache.spark.sql.SQLContext

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

val url = "jdbc:mysql://127.0.0.1:3306/amarokdb"

val df = spark.read.format("jdbc").option("url", url).option("dbtable", "albums").option("user", "root").option("password","pass").load()

df.printSchema() // Looks the schema of this DataFrame.
df.show()
df.count()

jueves, 3 de mayo de 2018

Apache Spark Sql


Como habíamos dicho en un ambiente Spark SQL, los 2 componentes más importantes son el DataFrame y el SQLContext.

DataFrame: Un dataframe es una colección de datos distribuida organizada dentro de nombres de columnas. Esto basado en el concepto de dataframe del Lenguaje R y similar al concepto de tablas de las base de datos relacionales.

SchemaRDD, que se encuentra en versiones anteriores de Spark SQL API y se ha renombrado como DataFrame.

DataFrames puede ser convertido en un RDDs, por medio de un método de RDD, el RDD resultante tiene las filas del DataFrames.

Los DataFrames pueden ser creados dados los siguientes origenes de datos:

  • RDDs existentes
  • un archivo estructurado
  • un Json
  • una tabla HIVE
  • y una base de datos externa. 

Spark SQL y DataFrame APIs esta disponible en Scala, Java, Python y R. 

Además de DataFrame, Spark también proporciona la API Dataset. Un Dataset es una colección distribuida de datos similar a los RDD pero que utiliza un codificador para serializar los objetos. La API Dataset está disponible en Scala y Java. Spark SQL admite métodos para convertir RDD existentes en conjuntos de datos.

SQLContext: Spark SQL proporciona SQLContext para encapsular toda la funcionalidad relacional en Spark. Se crea el SQLContext a partir del SparkContext existente, veamos un ejemplo: 

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

También hay HiveContext, que proporciona un superconjunto de la funcionalidad proporcionada por SQLContext. Se puede usar para escribir consultas usando el analizador HiveQL y para leer datos de tablas de Hive.

Notemos que no necesitamos un entorno Hive existente para usar HiveContext en los programas Spark.