okiyuki99 / HowToR

R Tips
3 stars 0 forks source link

sparklyr / sparkxgb #40

Open okiyuki99 opened 5 years ago

okiyuki99 commented 5 years ago

とは?

接続

conn <- sparklyr::spark_connect(
  master = "yarn-client",
  config = conf
)
...
sparklyr::spark_disconnect(
  master = "yarn-client",
  config = conf
)

sdf読み込み

mtcars_tbl <- sparklyr::sdf_copy_to(sc, mtcars, name = "mtcars_tbl", overwrite = TRUE)

Table操作

データ確認

Partition操作

Sparkはデータをpartitionという単位で並列処理するので、パフォーマンスを決める上で重要

ML general

pred <- sparklyr::ml_predict(rf_model, mtcars_test)
pred_proba <- sparklyr::ml_predict(glr, mtcars_tbl)

ml_multiclass_classification_evaluator(pred)
ml_regression_evaluator(pred, label_col = "cyl")
ml_binary_classification_evaluator(pred)

ML methds

glr <- sparklyr::ml_generalized_linear_regression(
  mtcars_tbl, 
  vs ~ ., 
  family = "binomial"
)
tidy_glr <- broom::tidy(glr)

config

config meaning
spark.dynamicAllocation.maxExecutors 1 jobに対して割り当てる最大のexecutorの数。大きなデータをフルスキャンして抽出する系のタスクならこのパラメータを大きくするのが望ましい
spark.executor.memory 1 executorあたり使用できる最大メモリ
spark.driver.memory driverの使用できる最大メモリ
spark.yarn.executor.memoryOverhead
spark.yarn.driver.memoryOverhead
spark.executor.instances executorの数
spark.driver.cores driverのコア数
spark.executor.cores executorのコア数
spark.serializer シリアライザの設定
config meaning
spark.sql.shuffle.partitions シャッフル後のDataFrameのパーティション数

参考 : Sparkの性能向上のためのパラメータチューニングとバッチ処理向けの推奨構成 | Think IT(シンクイット)

config meaning
sparklyr.shell.driver-memory
# 設定例
conf<- sparklyr::spark_config()
conf$spark.executor.cores <- 8
conf$spark.executor.memory <- "4G"
conf$spark.yarn.queue <- "dev"
conf$spark.dynamicAllocation.initialExecutors <- 10
conf$spark.dynamicAllocation.enabled <- "true"
conf$spark.dynamicAllocation.maxExecutors <- 100
conf$spark.shuffle.service.enabled <- "true"

注意点

公式サイト

Book

まとめ

参考

okiyuki99 commented 5 years ago

spark_web(sc) ブラウザで開く

okiyuki99 commented 5 years ago

The sparklyr package aids in using the “push compute, collect results” principle.

okiyuki99 commented 5 years ago

image

こういう使い方

okiyuki99 commented 5 years ago

The compute() command can take the end of a dplyr piped command set and save the results to Spark memory.

で、一旦Spark memoryに結果を保存できる