Hadoop Spark Conference Japan 2016 に参加したときのメモ
Hadoop Spark Conference Japan 2016に参加したので、その聞いた内容をまとめました。
Spark MLlib Now and Beyond
Spark自体はコントリビュータが多いプロダクト
sparkでは、2つのの機械学習ライブラリがある。
- spark.mllib: RDDというデータフレームを利用
- spark.ml: DataFrame, PipelineAPIを利用
spark.mlの利用を推奨
scikit-learnに影響
【データ構造】
- RDD
- DataFrameAPI
【RDD】
numpy.arrayのような配列の形式
【DataFrameAPI】
DataFrameAPI:RDBのように直感的にデータにアクセスできるAPI
pandasに影響を受けて作られている
【PipelineAPI】
処理をつなげられ、再利用もしやすい
tokenizer:単語のトークン化
hashingTF:単語のベクトル化
logisticRegression:ロジスティック回帰
上の3つの操作をpipelineでまとめることができる
pipelineを再利用することで簡単に使い回すことができる
例えば、入力をtrainDataとtestDataにしたり。
pipelineを使うと
クロスバリデーションも簡単にできる
そしてその作ったpipelineをs3やhdfsに永続化することもできる
pythonで分析して、scalaで読み込む
なんてこともできる
【Mllib2.0】
・GLMの改善
・永続化未対応ライブラリがまだある。それの改善。
SparkによるGISデータを題材として時系列データ
GISデータとは、船の航行データ(緯度、輝度、速度とか)
GISデータ、センサーデータ:多変量時系列データ
データの収集・蓄積はできているが、分析がまだまだ。
【要件】
性能、柔軟性、スケーラビリティが必要
【sparkを用いた時系列データ処理】
時間依存の情報
・時刻
・緯度、経度
時間非依存の情報
・移動体ID
やりたいこと
・移動体ごとにデータをソート
・時刻や座標の差分を計算
・numpyの関数をそのまま使えること
時系列データの評価ポイント
- レコード長の違い:長いほうが遅い(普通)
- レコードに偏りをもたせるか:ほぼ変わらない
- RDDかDataFrameか:DataFrameのほうが速い
RDD [“ships”, “0.0.0"]
DataFrame は表形式
ただ、DataFrameはメモリを使うので、そこら辺のチューニングが必要
flinkとかも出てきている。
pythonでできるところは、pythonで。
行、列指向の片方だけで閉じない
なんでpythonから移行したのか?→データ量が増えてきて、今後に対応できないと感じたから
sparkは1台で実行したのか?→並列で実行させている
sparkUIから確認することで、チューニングを行った。
時系列データにSparkを使うのは現実としてあり。
まだまだ、公式には足りない機能が多いので、spark packagesなどのパッケージ関連を検索してみるのも大事。