Skip to content

Instantly share code, notes, and snippets.

@jaceklaskowski
Last active October 15, 2015 06:50
Show Gist options
  • Save jaceklaskowski/c57e2f1cb77f9725671f to your computer and use it in GitHub Desktop.
Save jaceklaskowski/c57e2f1cb77f9725671f to your computer and use it in GitHub Desktop.
What people asked to cover at Apache Spark meetups

Warsaw Scala Enthusiasts meetup about Apache Spark themed Let's Scala few Apache Spark apps together! and the follow-up Let's Scala few Apache Spark apps together - part 2!.

Many, many people answered the question:

EN: What and how would you like to learn at the meetup (about Apache Spark)?

The answers are as follows (and are going to be the foundation for the agenda):

  1. Set up a cluster using many laptops and see how much it could handle.
  2. MLlib with a simple classification like logistic regression.
  3. How to develop Spark/Scala/Play Framework application - environment, configuration, networking
  4. Uruchamianie przekształceń na różnych datasetach
  5. podłączanie się do różnych źródeł danych
  6. może jakieś testy wydajnościowe w klastrze, i.e. demo, że można przyspieszyć obliczenia
  7. Data transformations
  8. Getting started using Spark Core and SQL, e.g. import JSON, CSV, JDBC files and combining them all. GraphX and MLlib. How to use Spark with play deploy.
  • Zadania dla początkujących z spark core + spark sql, np. import json, csv, jdbc + składanie tego w jedną całość i wyciąganie danych GraphX, MLlib jak łączyć sparka z innymi aplikacjami np.z playem deploy
  1. Basics - no earlier experience with Spark and would like to learn a little
  • Podstawy? :) (Szczerze nie mialem kontaktu ze sparkiem wiec chcialem sie czegos dowiedziec)
  1. Jak aplikacja w Scali komunikuje się ze klastrem sparkowym: zleca zadania, monitoruje ich stan i pobiera wyniki.
  2. What is important in development environment
  3. How to set up development environment (remote debugging, deployment) + Spark and Spark Streaming use cases, pros and cons developing apps in Scala vs Java/Python. Can be presentation.
  • jak ustawic srodowisko do developmentu (remote debugging. deploying), use casey zastosowania sparka i spark streamingu, zalety pisania w sparku w scali zamiast w javie/pythonie. Odpowiada mi forma prezentacji
  1. How to develop Spark apps in Scala
  • programowanie w Scali, dowiedzieć się, jak pracować ze Sparkiem
  1. MLlib & real-life use case. No more word counts or power of vector of ints. Show me Spark to conquer the world!
  • MLlib plus jakiś konkret z życia wzięty. Rzygam przykładami jak zliczyć liczbę słów w tekście albo podnieść wektor liczb do potęgi. Chcę zobaczyć jak zawojować świat Sparkiem, a nie jakieś tam takie okruchy.
  1. Introductory example. Companies and Spark - where and how
  • Prosty, działający przykład. Jakie firmy używają i do czego.
  1. Going to do the workshop https://github.com/deanwampler/spark-workshop. Hope it sparks some idea!
  1. MLlib
  • MLlib. Jak będziemy robić, to nie będzie nudy
  1. How to manage resources for Spark apps on Yarn vs Mesos
  • Jak zarządzać zasobami dla spark-aplikacji, Yarn vs. Mesos
  1. Spark Workshop
  • workshop formula with prepared data sets and problems like in school
  • how to join jdbc data source and json or csv file
  • How to group, get top rated, most popular things etc.
@pdendek
Copy link

pdendek commented Sep 4, 2015

Ad. 3 & 6)
Z MLlib-a można by zrobić osobną prezentację (podobnie jak ze Spark SQL-a).

Fajny przykład to rekomendacja filmów z ćwiczeniami na amplab.berkley.edu (pierwszy wynik via Google na zapytanie ze słowami: amplab spark movielens).
Zbiór/zbiory movielens zawierają ratingi filmów dok.przez użytkowników (21M ratingów, 30k filmów, 230k użytkowników, ost. update w sierpniu 2015)

Następny krok to kolejne alg, ale też ML Pipes, etc.

Ad.2.
Scala/Java są lepsze: API PySparkowe jest podzbiorem API Sparkowego (Scala/Java) - patrz ParamGridSearch oraz rejestrowanie UDFów będących funkcją zdefiniowaną w kodzie Sparkowym.

Niemniej jednak API Pythonowe jest bogate i dla mocnych Pythonostów będzie w pełni wystarczające.

@zero323
Copy link

zero323 commented Sep 6, 2015

@pdendek Mógłbyś Piotrze wyjaśnić co masz na myśli pisząc o rejestrowaniu UDFów?

@pdendek
Copy link

pdendek commented Sep 9, 2015

@zero323 to kalka językowa odnosząca się do funkcji sqlContext.udf.register
np. sqlContext.udf.register("strLen", (s: String) => s.length())

O UDF-ie mówię tu w kontekście zwykłej funkcji, którą można zdefiniować w kodzie
(nie zaś rozszerzeń klas Hive-owych, bądź implementacji interfejsów)

@zero323
Copy link

zero323 commented Sep 10, 2015

@pdendek Można (przykłady bezpośrednio z docstringów)

  • Spark >= 1.2

    from pyspark.sql.types import IntegerType
    
    sqlContext.registerFunction("stringLengthInt", lambda x: len(x), IntegerType())
    sqlContext.sql("SELECT stringLengthString('test')").collect()
    
  • Spark >= 1.3

    from pyspark.sql.functions import udf
    from pyspark.sql.types import IntegerType
    
    slen = udf(lambda s: len(s), IntegerType())
    df.select(slen(df.name).alias('slen')).collect()
    

Z tego co wiem nie można zdefiniować UDAFów, ale to tak czy inaczej eksperymentalny feature.

@pdendek
Copy link

pdendek commented Sep 10, 2015

@zero323 true
tak czy inaczej są rzeczy,
które docierają co PySparkowego API później

@zero323
Copy link

zero323 commented Sep 11, 2015

@pdendek

To racja, chociaż poważniejszym ograniczeniem są różne subtelności związane z tym jak wygląda komunikacja z JVM co sprawia, że np. używając MLlib w Scali możesz zrobić coś takiego

 rdd.map(lp => model.predict(lp.features)) 

a Pythonowy odpowiednik nie ma szans zadziałać

 rdd.map(lambda lp: model.predict(lp.features))

No i generalnie PySpark sprawia wrażenie słabiej przetestowanego.

W każdym razie dzięki za odpowiedź.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment