Weitere ähnliche Inhalte Ähnlich wie 個人的にAmazon EMR5.0.0でSpark 2.0を使ってZeppelinでSQL集計してみる (20) Mehr von Eiji Shinohara (20) Kürzlich hochgeladen (11) 個人的にAmazon EMR5.0.0でSpark 2.0を使ってZeppelinでSQL集計してみる2. 2
Amazon EMR – 2016年のアップデート
• 1⽉: EMR 4.3.0 – Spark, Presto, Ganglia
• 3⽉: EMR 4.4.0 – Sqoop, HCatalog, Java 8, 他
• 4⽉: EMR 4.5.0 – Hadoop, Presto, SparkとEMRFS追加
• 4⽉: EMR 4.6.0 – 巨⼤データへのリアルタイムアクセス⽤
に、Hbase
• 6⽉: EMR 4.7.0 – Apache Tez, Apache Phoenix, Presto,
HBase, Mahout
• 8⽉: EMR 5.0.0 - メジャーアップデート!
https://aws.amazon.com/jp/blogs/news/amazon-emr-5-0-0-major-app-updates-ui-
improvements-better-debugging-and-more/
3. 3
Amazon EMR – 5.0.0
• 16のオープンソースのHadoopエコシステムプロジェクトを
サポート
• SparkとHiveのメジャーバージョンアップ
• TezがHiveとPigのデフォルトに
• HueとZeppelinのUI改善
• デバッグ機能の改良
https://aws.amazon.com/jp/blogs/news/amazon-emr-5-0-0-major-app-updates-ui-
improvements-better-debugging-and-more/
7. 7
Spark 2.0 – Machine Learning
• Announcement: DataFrame-based API is primary API
– DataFrame-basedのAPIがプライマリのAPIに
• The MLlib RDD-based API is now in maintenance mode
– MLlib RDD-based APIはメンテナンスモードに
http://spark.apache.org/docs/latest/ml-guide.html
8. 8
Spark 2.0 – Machine Learning
• As of Spark 2.0, the RDD-based APIs in the spark.mllib
package have entered maintenance mode
– Spark2.0からspark.mllibパッケージのRDD-based APIは
メンテナンスモードに
• The primary Machine Learning API for Spark is now the
DataFrame-based API in the spark.ml package
– Sparkにおけるプライマリな機械学習APIはspark.mlパッ
ケージのDataFrame-based APIに
http://spark.apache.org/docs/latest/ml-guide.html
9. 9
Spark 2.0 – Machine Learning
• RDD-based API ⇒ DataFrame-based APIへ
– spark.mllib のサポートは基本的にはバグフィックス
– RDD-based APIには新しい機能追加は⾏わない
– Spark 2.xのリリースでMLlibはDataFrame-based APIに
機能追加を⾏い、RDD-based APIに追いつく
– DataFrame-based APIがRDD-based APIに追いついたら
(おおよそSpark 2.2)、RDD-based APIはdeprecatedに
– RDD-based APIはSpark 3.0で削除予定
http://spark.apache.org/docs/latest/ml-guide.html
10. 10
Spark 2.0 – Machine Learning
• なぜDataFrame-based APIか?
– DataFrameはRDDよりユーザーフレンドリーなAPIを提供
• Spark Datasources
• SQL/DataFrame queries
• Tungsten and Catalyst optimizations
• ⾔語によらない統合されたAPI
– DataFrame-based API for Mllibは機械学習アルゴリズム及び
⾔語によらない統合されたAPIを提供する
– DataFrameは実践的なfeature transformations(tokenize,
normalize, n-gram等)といった機械学習パイプラインを提供
http://spark.apache.org/docs/latest/ml-guide.html
11. 11
Spark 2.0 – Getting Started
• Zeppelinでアクセス
– Security Group で SSH の設定
– SSH で トンネル
12. 12
Spark 2.0 – Getting Started
• Zeppelinでアクセス
– Proxyの設定(FoxyProxy)
15. 15
Spark 2.0 – Getting Started
• “Spark DataframeのSample Code集”
– http://qiita.com/taka4sato/items/4ab2cf9e941599f1c0ca
16. 16
Spark 2.0 – Getting Started
• ZeppelinでNotebookを作成して実⾏
– とりあえずsc
– S3のデータを読み込んでメモリ上のテーブルへ
val wholeRawLog = sc.textFile("s3n://try-spark-eshinoha/click_data_sample.csv")
val header = wholeRawLog.first()
case class Click(clickAt: String, userId: String, campaignId: String)
val click = wholeRawLog.map(s=>s.split(",")).filter(s=>s(0)!=""click.at"").map(
s=>Click(s(0).replaceAll(""", ""),
s(1).replaceAll(""", ""),
s(2).replaceAll(""", "")
)).toDF()
click.registerTempTable("click")
Scalaに慣れてなくて⽇付型の扱いとかアレで全部Stringでスミマセン…汗
17. 17
Spark 2.0 – Getting Started
• ZeppelinでNotebookを作成して実⾏
– S3から取り込んだデータをSQLを使って集計