Spark on SQL Server?
meetup app Osaka@3
2018/12/22 @shinsukeoda
SQL Server 2019
最近 CTP 2.2 出てます
https://docs.microsoft.com/en-us/sql/sql-
server/sql-server-ver15-release-
notes?view=sqlallproducts-allversions
目玉機能は何?
多くの人は
これを推すはず
Big Data Clusters
Big Data Clusters
k8s で動かすクラスタ (SQL Server /
Spark / HDFS)
データの仮想化
Mongo, HDFS, Oracle とかにアクセス
Data lake
一つの場所にデータを集約(Shared HDFS)
スケールアウトデータマート
Compute Plane / Data Plane
https://docs.microsoft.com/en-us/sql/big-data-cluster/big-data-cluster-overview?view=sqlallproducts-allversions
https://docs.microsoft.com/en-us/sql/big-data-cluster/concept-storage-
pool?view=sqlallproducts-allversions
Big Data Clusters
Spark?
Apache Spark
http://spark.apache.org/
Spark ジョブ から HDFS/SQL Server の
データにアクセス
Spark on SQL Server?
Spark on SQL Server?
Big Data Clusters 知りたい人は…
SEの雑記
https://blog.engine
er-memo.com/
Java language extension
in SQL Server 2019
external_script で Java が呼べるように
なった!
external_script = 外部スクリプト
2016 で R、2017 で Python
2019 で Java
https://docs.microsoft.com/en-
us/sql/advanced-analytics/java/extension-
java?view=sqlallproducts-allversions
http://sparkjava.com/
残念なお知らせ
実行は出来たけど別プロセスからアクセ
ス出来ない
同じプロセス内からならアクセス可
public static void runSqlServer() {
// Spark 設定
get("/hello", (request, response) -> "<h1>Hello Spark!! on SQL
Server?</h1>");
// HTTP でアクセス!
try {
String res = run("http://localhost:4567/hello");
System.out.println(res);
} catch (IOException e) {
System.out.println(e);
}
}
static OkHttpClient client = new OkHttpClient();
static String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
デモ
https://docs.microsoft.com/en-us/sql/advanced-analytics/concepts/extensibility-
framework?view=sqlallproducts-allversions
実行プロセスは?
R
RTerm.exe
Python
Python.exe
Java
Java.exe
ExtHost.exe
SQL External Runtime Host
ExtHost.exe
インストールパス
/MSSQL15.MSSQLSERVER¥MSSQL¥Bi
nn¥ExtHost.exe
情報無くて動きよー分からん。
Get-NetTCPConnection と Task Manager の照合
試した結果
localhost:4567 で ExtHost.exe が待ち
受けてるのが確認出来る。
でも外部プロセスからアクセス不可
Invoke-WebRequest –Uri
http://localhost:4567/hello で蹴ると
Firewall に阻まれてる感じのレスポンス
の遅さ
Firewalll 無効にしてもダメ。。
まとめ
惜しい感じで Spark on ~ じゃない。
今のところ SQL Server で Web アプリ
は動かせるけど、アクセス出来ないから
使えない。
ちなみに 外部に HTTP アクセスは出来る
ので、どっかの API 叩くとかは出来そう
データの仮想化!!!!

Spark on sql server?