下記サイトを参考、、というより、ほぼそのまま実施
http://www.atmarkit.co.jp/ait/articles/1609/27/news018.html
CSV作成
csvをrubyで作成。s3にアップロード
sbtプロジェクトを作成
build.sbt
name := "SparkExampleApp"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "2.1.0",
"org.apache.spark" %% "spark-mllib" % "2.1.0",
"org.apache.spark" %% "spark-sql" % "2.1.0",
"com.databricks" %% "spark-csv" % "1.4.0"
)
ソースコードは下記を丸コピ
使用するsparkのspark-defaults.confに下記を追記
spark-defaults.conf
spark.jars.packages com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.3
s3にフルアクセスできるユーザー作成
(若干ポリシー周りのUIが違うが気をつけて)
アクセスキーとシークレットキーをコピーしておく
先ほどのSparkExampleApp.scalaにアクセスキーとシークレットキーを貼り付け
実行
ローカルで実行
./bin/spark-submit --class SparkExampleApp --master local {自分の作成したjarファイルのpath} {S3に配置したdata.csvのパス) {S3の保存先のパス}
下記みたいな感じになる
./bin/spark-submit --class SparkExampleApp --master local ~/Desktop/SparkExampleApp/target/scala-2.11/spark-sample-project_2.11-1.0.jar s3n://my-bucket-name/data.csv s3n://my-bucket-name/output.csv
マシンの性能が足りないとtmpファイルがs3にアップロードされる
EMRではしっかり動くのであとは最初の記事通り設定すればOK