情報処理学会 第83回全国大会

2021年情報処理学会全国大会

今年も参加しました
情報処理学会第83回全国大会
オンライン開催のため,以前のように現地の写真をレポートすることができないのが残念です.
2017年情報処理学会全国大会。 - なぜか数学者にはワイン好きが多い
情報処理学会第76回全国大会に行ってきた - なぜか数学者にはワイン好きが多い
第75回情報処理学会全国大会 - なぜか数学者にはワイン好きが多い
2012年第74回情報処理学会全国大会出席まとめ - なぜか数学者にはワイン好きが多い
情報処理学会全国大会2011 - なぜか数学者にはワイン好きが多い
第70回情報処理学会全国大会 - なぜか数学者にはワイン好きが多い

初のオンライン開催では,バタバタと決まったこともあり,学生さんの参加者が激減した記憶があります.
情報処理学会第82回全国大会

が,今回は参加者は多かったように思います.
印象的だったのは,オンラインに慣れている何人かの学生さんが,ビデオ映像を入れて上手にプレゼンテーションをアピールした発表をしていることです.Zoom操作・パソコントラブル等もずいぶん減ったような印象でした.

ちょっとだけ負担が増えたことは,情報処理学会ではオンライン開催のトラブルを防ぐため,セッションの座長の他に「座長補佐」というものを置くようになりました.だいたいの人は座長と座長補佐の両方を引き受けることになるため,準備の手間が2倍になった感じです.まあ,仕方がないかなーと思います.
また,オンラインの方が質疑応答参加のハードルが高いのか,質問等が圧倒的に減ったように思います.座長も現場の雰囲気が見えないために時間により質疑応答を打ち切りやすく,時間は比較的守られる反面,全国大会のコミュニケーションを促進するという目的に対してはイマイチのイベントになっているなあという気がしました.

ああ,本当に字ばっかりの記事になった笑

自分の発表の時に,前の職場の同僚が聴講参加しているのを見つけてしまい,超緊張した&もっと面白いネタで発表すれば良かったと後悔したのは秘密です.
# t2sy氏,君だw

Jupyter labをインストールしてScalaをSparkで使う

この間,

注:Jupyter自体は予めインストールされているとします.

と書いたところを,一応丁寧に.
自分の備忘録として.
AWS EC2にインストールする必要が出たので.

EC2にデフォルトではpython2しか入っていなかったので,python3を入れてjupyterをインストールします.

sudo yum install python3-devel
pip-3 install --user jupyterlab

jupyterを立ち上げた時にブラウザが立ち上がらないようにするとかパスワードやトークンを不必要にしてセキュリティレベルを落とす(アクセス元制限とか他の方法でセキュリティ設定がされていることとする)とか,設定を変更します.

jupyter lab --generate-config
emacs .jupyter/jupyter_lab_config.py

c.ExtensionApp.open_browser = False  
c.ServerApp.token = ''  

ここまででjupyter-labを立ち上げると,ランチャーにはデフォルトで登録されているpythonなどが出ます.
f:id:tullio:20210320013752p:plain

ここで,紹介した方法でalmondをインストールします.
Scala/SparkのJupterカーネル「Almond」の導入 - なぜか数学者にはワイン好きが多い

その後,jupyter-labを立ち上げると,ランチャーにscalaが出ます.

f:id:tullio:20210320014055p:plain

Scala(almond)を選んでノートブックを立ち上げたあと,sparkを使うにはライブラリをインポートします.
あと,ドキュメントにあるようにログレベルも変更します.
Spark · almond

import $ivy.`org.apache.spark::spark-sql:3.1.1`
import $ivy.`sh.almond::almond-spark:0.11.0`
import org.apache.log4j.{Level, Logger}
Logger.getLogger("org").setLevel(Level.OFF)

ライブラリのインポートが成功したあとに,sparkセッションのインスタンスを作成します.

import org.apache.spark.sql._

val spark = {
  NotebookSparkSession.builder()
    .master("local[*]")
    .getOrCreate()
}

あとは,sparkを使う感じで実行ができます.

import spark.implicits._
val a = Seq(1,2,3).toDF
a.show
+-----+
|value|
+-----+
|    1|
|    2|
|    3|
+-----+

簡単で,素敵ですね(colla風)