Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jupyter and RethinkDB

Ryan Paul
August 26, 2015

Jupyter and RethinkDB

Learn how to use RethinkDB with Jupyter, a rich platform for interactive programming built on top of the powerful IPython REPL. In this talk, I'll demonstrate how to perform ReQL queries in a Jupyter notebook, integrating with matplotlib and other libraries to generate data visualizations.

Ryan Paul

August 26, 2015
Tweet

More Decks by Ryan Paul

Other Decks in Programming

Transcript

  1. • Rich interactive REPL with terminal and desktop frontends •

    Persistent REPL notebook that can evaluate code and save results What is Jupyter?
  2. • Language-agnostic platform abstracted out of IPython • IPython itself

    now provides Jupyter’s Python kernel • Wide range of other programming languages are supported What is Jupyter?
  3. • Interactive literate programming environment that runs in browser •

    Combine code snippets and output with rich text content • Displays embedded content like visualizations Jupyter Notebook
  4. What is RethinkDB? • Open source database for building realtime

    web applications • NoSQL database that stores schemaless JSON documents • Distributed database that is easy to scale • High availability database that is resilient against failure
  5. ReQL & Jupyter • ReQL is the RethinkDB query language

    • ReQL integrates with syntax of the underlying language • ReQL is expressive and provides useful tools for data manipulation
  6. • Add special commands to Jupyter that work on REPL

    and notebook • Typically prefixed with a % sign • Can programmatically transform user input Magic Functions
  7. Magic Functions from IPython.core.magic import register_line_magic @register_line_magic def r(line): import

    rethinkdb as r conn = r.connect() response = eval(line).run(conn) if type(response) == r.net.DefaultCursor: response = list(response) print to_pretty_json(response) conn.close()
  8. • Jupyter provides APIs for displaying rich content • Can

    embed images, HTML, JSON, and other kinds of content • Import from IPython.display Display Functions
  9. Using Matplotlib %matplotlib inline from matplotlib import pyplot import rethinkdb

    as r conn = r.connect() quakes = r.table("quake") \ .filter(r.row["time"].month() == r.now().month()) \ .group(r.row["time"].day()).count() \ .ungroup().order_by(r.row["group"]) \ .do([r.row["group"], r.row["reduction"]]).run(conn) conn.close() pyplot.bar(quakes[0], quakes[1]) pyplot.show()
  10. Using Matplotlib %matplotlib inline import mplleaflet from matplotlib import pyplot

    import rethinkdb as r conn = r.connect() near_tokyo = list(r.table("quake").get_intersecting( r.circle([139.69, 35.68], 200, unit="mi"), index="geometry") ["geometry"] \ .map(r.row.to_geojson()["coordinates"]).run(conn)) conn.close() pyplot.plot([p[0] for p in near_tokyo], [p[1] for p in near_tokyo], 'rs') mplleaflet.display()