Neal McBurnett, 2015-04-09, Boulder Linux Users Group
Audience: BLUG: Linux users and sysadmins interested in tools and infrastructure for data science
For extra geek credit: live IPython notebook slides that run in a Docker image
Huge thanks for
Hadoop Definitive Guide by Thom White

MapReduce: Simplified Data Processing on Large Clusters
Kernel programming model for working with distributed data.



Example of how Spark computes job stages. Boxes with solid outlines are RDDs. Partitions are shaded rectangles, in black if they are already in memory
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
%%bash
hdfs dfs -rm -r -f ints.parquet # Delete ints.parquet if it was created previously
import random
from pyspark.sql import Row
data = sc.parallelize(xrange(100)).flatMap(lambda x: [Row(a=random.randint(1, 10), num=random.randint(1, 100), str=("a" * random.randint(1, 30))) for i in xrange(1000)])
dataTable = sqlContext.createDataFrame(data)
dataTable.saveAsParquetFile("ints.parquet")
data
PythonRDD[34] at RDD at PythonRDD.scala:42
data = sqlContext.load("ints.parquet")
data.groupBy("a").agg(col("a"), avg("num")).collect()
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-12-be2cb65442b5> in <module>() 1 data = sqlContext.load("ints.parquet") ----> 2 data.groupBy("a").agg(col("a"), avg("num")).collect() NameError: name 'col' is not defined