2017-11-09 21 views
1

私はsparkRコードを書いて、EMRクラスター上でspark-submitまたはsparkRを使用して送信できるかどうか疑問に思っています。EMRクラスタでspark-submitまたはsparkRを使用してSparkRスクリプトを実行するにはどうすればよいですか?

は、私には、例えば、いくつかの方法を試してみました:

Error in sparkR.sparkContext(master, appName, sparkHome, sparkConfigMap, : 
JVM is not ready after 10 seconds 

サンプルコード:

またはsparkR --no-保存mySparkScript.rなど..しかし、私はエラーの下に取得しています毎回 sparkR mySparkRScript.rを
#Set the path for the R libraries you would like to use. 
#You may need to modify this if you have custom R libraries. 
.libPaths(c(.libPaths(), '/usr/lib/spark/R/lib')) 

#Set the SPARK_HOME environment variable to the location on EMR 
Sys.setenv(SPARK_HOME = '/usr/lib/spark') 

#Load the SparkR library into R 
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"))) 

#Initiate a Spark context and identify where the master node is located. 
#local is used here because the RStudio server 
#was installed on the master node 

sc <- sparkR.session(master = "local[*]", sparkEnvir = list(spark.driver.memory="2g")) 

sqlContext <- sparkRSQL.init(sc) 

注:直接貼り付けるか、source("mySparkRScript.R")を使用してコードをsparkr-shellで実行することができます。

参考:

  1. Crunching Statistics at Scale with SparkR on Amazon EMR
  2. SparkR Spark documentation
  3. R on Spark
  4. Executing-existing-r-scripts-from-spark-rutger-de-graaf
  5. Github

答えて

0

私はこのルピー経由で実行して取得することができましたcript。あなたがする必要があるいくつかのことがあります、そして、これは少しプロセス集中かもしれません。

  1. 自動化されたSparkRまたはsparklyRビルドの方法を解説します。経由:https://github.com/UrbanInstitute/spark-social-science
  2. まず次のステップ1(S3バケットにEMRテンプレートとrstudio_sparkr_emrlyr_blah_blah.sh sriptsを入れていることを確認してください)
  3. 経由で作成されますEMRテンプレートとブートストラップスクリプトを使用してクラスタを作成するAWS CLIを使用して、
  4. あなたのRコードを1つのファイルに入れてこれを別のS3バケットに入れてください...あなたが提供したサンプルコードはうまくいくはずですが、実際にはS3からデータを読み込み、
  5. あなたが持っているS3バケットからRファイルをコピーするもう1つの.shファイルを作成します(これは、あなたが周りにいるかもしれない「重い」コードに入る前に動作することを確認するためです) 、それからRscript。このシェルスクリプトをあなたのRコードファイルと同じS3バケットに入れてください(単純化のため)。 、AWS CLIで

    #!/bin/bash 
    aws s3 cp s3://path/to/the/R/file/from/step3.R theNameOfTheFileToRun.R 
    Rscript theNameOfTheFileToRun.R 
    
  6. クラスタの作成時に、クラスタの作成呼び出しに--stepを挿入し、によって提供されるカスタムのJARランナーを使用します。このシェルファイルの内容の例は次のようになります。 AmazonがRコードをコピーして実行するシェルスクリプトを実行する

  7. Rコードの最後にSparkセッションを停止してください。

AWS CLIコマンドの例は次のようになります(この例ではAmazonのus-east-1ゾーンを使用していますが、クラスタ内の各ワーカーに100GBディスクを投げています...)幸運「私たち-東-1」あなたが見るどこにあなたのゾーンを入れて、あなたの代わりに好きなサイズのディスク選択)

aws emr create-cluster --name "MY COOL SPARKR OR SPARKLYR CLUSTER WITH AN RSCRIPT TO RUN SOME R CODE" --release-label emr-5.8.0 --applications Name=Spark Name=Ganglia Name=Hadoop --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.xlarge 'InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.2xlarge,EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,SizeInGB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iops=100},VolumesPerInstance=1}]}' --log-uri s3://path/to/EMR/sparkr_logs --bootstrap-action Path=s3://path/to/EMR/sparkr_bootstrap/rstudio_sparkr_emr5lyr-proc.sh,Args=['--user','cool_dude','--user-pw','top_secret','--shiny','true','--sparkr','true','sparklyr','true'] --ec2-attributes KeyName=mykeyfilename,InstanceProfile=EMR_EC2_DefaultRole,AdditionalMasterSecurityGroups="sg-abc123",SubnetId="subnet-abc123" --service-role EMR_DefaultRole --scale-down-behavior TERMINATE_AT_TASK_COMPLETION --auto-terminate --region us-east-1 --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://path/to/the/shell/file/from/step4.sh"] 

!乾杯、ネイト

関連する問題