-
-
Save shadaj/323ad2393b46c1b71df435728a052c24 to your computer and use it in GitHub Desktop.
| { | |
| "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": [] | |
| } | |
| ] | |
| } |
Same as BilalKacel: the install seems to work, but the kernel does not load Scala. Tried to reload the page and restart the kernel but did not work for me.
I would strongly encourage this to be resolved
This was possible earlier, but indeed fails now
Hmm, this is surprising. I just used the same initialization code for a couple other notebooks in the past week and it seemed to work fine. Perhaps the notebook needs to be set to the Scala kernel like in https://gist.github.com/shadaj/29d77180aeefc41a749273026f7d1fd9 to work?
This is so disappointing. I can whip together and train a deep learning model in Python / keras in a matter of minutes, but I can't find anything comparable for Scala :-(
There is actually an important prerequisite to assure before you follow steps given by @shadaj: If you open a notebook with a text editor and compare the raw contents of a regular Notebook with that of a Shadaj's notebook, you'll see one crucial difference that you need to fix. So,
- You need to open your Colab Notebook with a text editor (use any of the relevant Google Drive apps) and make sure the
kernelspec.namekey is set to work with Scala, like so:
{
⋮
"kernelspec": {
"display_name": "Scala",
"name": "scala"
}
⋮
}(This is a necessary step for any non-pythonic kernel — be it Scala, Go or whatnot. Check my notebooks for examples: https://gist.github.com/kirisakow)
-
Save, close.
-
Now open normally with Google Colab engine and start working.
@Platinum-Dragon Just follow the steps in one of these colabs of mine:
Hello Shadaj,
I hope you're well.
I would like to know if the installation procedure of the Scala kernel is still functional?
From Colab, there is no error when I run the Scala Kernel installation.
But, unfortunately, just running the "Hello World !" print does not work ...
Do you have any advice ?
Thank you.
Cheers,