-
-
Save hercules261188/3b076c2f2011d68f78c7169a8087943c to your computer and use it in GitHub Desktop.
Install Scala in Colab.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nbformat": 4, | |
| "nbformat_minor": 0, | |
| "metadata": { | |
| "colab": { | |
| "name": "Install Scala in Colab.ipynb", | |
| "version": "0.3.2", | |
| "provenance": [], | |
| "private_outputs": true, | |
| "collapsed_sections": [], | |
| "toc_visible": true, | |
| "include_colab_link": true | |
| }, | |
| "kernelspec": { | |
| "name": "python3", | |
| "display_name": "Python 3" | |
| }, | |
| "accelerator": "GPU" | |
| }, | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "view-in-github", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "<a href=\"https://colab.research.google.com/gist/shadaj/323ad2393b46c1b71df435728a052c24/install-scala-in-colab.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "zYzgRayyZ2z8", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "# Scala Installer for Colaboratory\n", | |
| "This notebook installs [Almond](http://almond.sh), a Scala kernel for Jupyter, into Colaboratory and configures it to make the preinstalled Python libraries accessible to Scala code (through [ScalaPy](https://github.com/shadaj/scalapy)).\n", | |
| "\n", | |
| "Because this installer is built on Almond, you get complete Scala support inside your notebooks, including the ability to get code completions and access to the [Jupyter-specific APIs](https://almond.sh/docs/api-jupyter). In addition, this installer configures Almond to be able to load preinstalled modules in Colab such as `numpy` and `tensorflow` through ScalaPy.\n", | |
| "\n", | |
| "If coming to this notebook from GitHub, make sure to **not reset your runtime** when running this notebook. In order to install the Scala kernel, the installer writes data to the runtime filesystem, so resetting would clear out the kernel.\n", | |
| "\n", | |
| "## Post-installation Setup\n", | |
| "After installing the Scala kernel, you will need to **completely restart the Jupyter instance** for the Scala notebook you want to run. If you are not yet connected to a Jupyter server (check the top right of your screen), you are fine and can immediately start running code.\n", | |
| "\n", | |
| "However, if you previously started a Jupyter server, you must now go to `Runtime > Manage Sessions` and terminate the session for the Scala notebook. Then after reloading the page, you will see a button to connect to a server, which will start up a new Jupyter server that will now have the Scala kernel loaded.\n", | |
| "\n", | |
| "**Note:** if your session expires and the machine is shut down, you will need to re-run this installer because Colab resets the filesystem" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "QVJoUDPtb9gX", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "Install the Almond kernel into the global Jupyter kernels." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "949yQj6ltEoW", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "%%shell\n", | |
| "SCALA_VERSION=2.12.8 ALMOND_VERSION=0.3.0+16-548dc10f-SNAPSHOT\n", | |
| "curl -Lo coursier https://git.io/coursier-cli\n", | |
| "chmod +x coursier\n", | |
| "./coursier bootstrap \\\n", | |
| " -r jitpack -r sonatype:snapshots \\\n", | |
| " -i user -I user:sh.almond:scala-kernel-api_$SCALA_VERSION:$ALMOND_VERSION \\\n", | |
| " sh.almond:scala-kernel_$SCALA_VERSION:$ALMOND_VERSION \\\n", | |
| " --sources --default=true \\\n", | |
| " -o almond-snapshot --embed-files=false\n", | |
| "rm coursier\n", | |
| "./almond-snapshot --install --global --force\n", | |
| "rm almond-snapshot" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "FXlAFUtPcEPo", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "Finally, we modify the kernel definition to preload the Python 3 native library to enable usage of modules such as `numpy` and `tensorflow` in ScalaPy." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "1kVqkjNBU6K6", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "%%shell\n", | |
| "echo \"{\n", | |
| " \\\"language\\\" : \\\"scala\\\",\n", | |
| " \\\"display_name\\\" : \\\"Scala\\\",\n", | |
| " \\\"argv\\\" : [\n", | |
| " \\\"bash\\\",\n", | |
| " \\\"-c\\\",\n", | |
| " \\\"env LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libpython3.6m.so:\\$LD_PRELOAD java -jar /usr/local/share/jupyter/kernels/scala/launcher.jar --connection-file {connection_file}\\\"\n", | |
| " ]\n", | |
| "}\" > /usr/local/share/jupyter/kernels/scala/kernel.json" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment