8/20 (土)
[Movie] 『傷物語』『ゴーストバスターズ』『X-MEM』
忙しくて一月ぐらい映画を観ていないので川崎 TOHO シネマズ3本まとめてみる。 『傷物語 熱血編』『ゴーストバスターズ』(3D字幕版)『X-MEM: アポカリプス』(字幕版)を梯子。
8/17 (水)
郵便の転送の延長申請
引越しをしてほぼ一年経つが一部の送り先からの郵便が旧住所に届くので、転送を一年延長してもらう。 延長の手続きは転送と同じだったので、特に料金とかなくてもOKだった。
8/14 (日)
Java のメソッドトレーサー
昔、JVMPI で作られたメソッドのインとアウト時にメッセージを出力してくれるメソッドトレーサーがあった気がしたが、Google で検索しても見つからなくなっている。 JVMPI は JVMTI に変わったが、改めにメソッドトレーサーを作ってみることにする。
とりあえず github で開発する。
8/11 (木)
HPE が SGI を買収
Hewlett Packard Enterprise (HPE) が SGI を 2億7500万ドルで買収するというニュースが流れた。
少し前に Intel がディープラーニングのチップを開発する従業員 48 人のベンチャー Nervana を推定 4億800万ドルで買収したというが、かつての名門ワークステーション & HPC ベンダーだった SGI 社が負債があるのかもしれないがたった 2億7500万ドルとは随分落ちたものだ。
8/9 (火)
Apache Spark 2.0 と predicate subquery 対応
Apache Spark 2.0 が公開された。 今版から ANSI SQL (SQL 2003) に対応し、TPC-DS の 99 種類のクエリーがそのまま実行可能になったという。
- Publickey | Apache Spark 2.0正式版がリリース。ANSI SQL標準サポート、10倍以上の高速化など
- databricks | SQL Subqueries in Apache Spark 2.0
Apache Spark 1.6 までは WHERE 句の副問い合わせが使えないために TPC-H の一部クエリーが実行できなかったのだが、TPC-DS がフルサポートされた以上 TPC-H を実行してみるが、相変わらずクエリーエラーが発生する。 例えば以下のようなクエリーである。 これは赤字の EXISTS 句がなければ成功する。
import org.apache.spark.sql.SparkSession val spark = SparkSession.builder().appName("Spark SQL Example").getOrCreate() val ordersDF = spark.read.format("jdbc").options(Map("url" -> "jdbc:postgresql:dbt3", "dbtable" -> "public.orders")).load() ordersDF.createTempView("orders") val lineitemDF = spark.read.format("jdbc").options(Map("url" -> "jdbc:postgresql:dbt3", "dbtable" -> "public.lineitem")).load() lineitemDF.createTempView("lineitem") println("Query 4") spark.sql("SELECT o_orderpriority, count(*) AS order_count FROM orders" "WHERE o_orderdate >= '1994-05-01' AND o_orderdate < '1994-08-01' AND" "EXISTS ( SELECT * FROM lineitem WHERE l_orderkey = o_orderkey AND l_commitdate < l_receiptdate )" "GROUP BY o_orderpriority ORDER BY o_orderpriority;").show()
このような WHERE 句の副問い合わせ(predicate subquery)が Spark 2.0 からサポートされたはずなのにエラーになると悩んでいたのだが、最後の青字のセミコロン(;)を取るとクエリーが受理されて無事実行されることが分かった。 Predicate subquery がなければ SQL の最後をセミコロンで終わってもいいのだが、predicate subquery が入るとパースエラーとなる。 なぜだか原因は分からない。
追記
どうも勘違いだった。 SQL 文の最後にセミコロン(;)があると SparkSQL にエラーとなっていた。
もともと PostgreSQL で動いていた TPC-H の SQL をベースに Spark 1.6 上の SparkSQL に変更していた。 Predicate subquery を含むものは動くが SQL 文の最後のセミコロンは削除していたが、predicate subquery を含むものは構文が対応しないというエラーが出たためセミコロンを削除するまで修正していなかった。 Spark 2.0 でテストしたところ前と同じクエリーがエラーとなったが、Spark 1.6 は predicate subquery が未対応だというエラーで、Spark 2.0 はセミコロンが原因のエラーだった。
先に Spark 1.6 で動くようにしたクエリーが SQL 文の最後からセミコロンを取り除いていたことを忘れていたので、今回のような勘違いをした。
8/8 (月)
風呂の給湯器の時計が5分遅れていた
ふろ給湯器には時計がついており出勤前にシャワーを浴びたりする時にはこの時計を見て時刻を確認していたのだが、どうも 5 分遅れていることに気づいた。 この頃、朝風呂に入ってから出社すると微妙に間に合わないことが多かったのだが、これが原因だったのか。