2017-12-02 14 views
0

amazon EMR 인스턴스에서 pynpark를 실행하여 dynamodb에서 데이터를 읽으려는 중 코드의 분할 및 작업자 수를 설정하는 방법을 알고 싶습니다.pyspark에서 분할 및 감속기 수를 설정하는 방법

다음 두 문서의 지침에 따라 현재 dynamoDB에 연결되어 있고 데이터를 읽는 아래 코드가 있습니다. connecting to dynamoDB from pysparkPyspark documentation

from pyspark.context import SparkContext 
sc = SparkContext.getOrCreate() 
conf = {"dynamodb.servicename": "dynamodb", "dynamodb.input.tableName": 
     "Table1", "dynamodb.endpoint": "https://dynamodb.us-east- 
     1.amazonaws.com", "dynamodb.regionid":"us-east-1", 
     "mapred.input.format.class": 
     "org.apache.hadoop.dynamodb.read.DynamoDBInputFormat", 
     "mapred.output.format.class": 
     "org.apache.hadoop.dynamodb.write.DynamoDBOutputFormat" 
orders = sc.hadoopRDD(inputFormatClass="org.apache.hadoop.dynamodb.read.DynamoDBInputFormat", 
        keyClass="org.apache.hadoop.io.Text", 
         valueClass="org.apache.hadoop.dynamodb.DynamoDBItemWritable", conf=conf) 

내가 인스턴스 및 SparkConf 클래스의 병렬 처리의 값을 변경하려고하지만 그게 분할 및 감속기를 설정

SparkConf().set('spark.executor.instances','4') 
SparkConf().set('spark.default.parallelism', '128') 

변수 SparkContext에 미치는 영향을 확인하고, 하지만 그것을 변경하지 않는 것 같습니다.

답변

0

나는 보통 SparkConf을 변경하는 방법은 이것이다 :

from pyspark import SparkContext 
from pyspark import SparkConf 

sconf = SparkConf() 

sconf.set("spark.default.parallelism", 200) 

sc = SparkContext(conf = sconf) 
2

내가 SparkConf 클래스의 인스턴스의 값과 병렬 처리를 변경하려고했지만 확실하지 그 변수 SparkContext에 미치는 영향을

SparkConf 객체는 SparkContext

conf = SparkConf() \ 
    .set('spark.executor.instances','4') \ 
    .set('spark.default.parallelism', '128') 

sc = SparkContext(conf=conf) 
01,235,164의 initalization 동안 통과 된

하지 않는 한

구성이 없습니다. 컨텍스트를 기존 getOrCreate로 가져온 경우 :

sc = SparkContext() 
... 
sc = SparkContext.getOrCreate(conf=conf) 

은 일부 적용됩니다 (하지 default.parallelism).

는 RDD 입력에 대한

는 하둡 구성 (mapred.min.split.size) :, Number of Partitions of Spark DataframeWhy does partition parameter of SparkContext.textFile not take effect?

을 사용하여 분할의 수를 설정하는 방법을 알고 싶습니다