2017-12-02 153 views
0

我想在amazon EMR實例上運行pyspark以從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類並行數值,但不知道如何將影響SparkContext變量

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

設置分裂和減速器,但它似乎沒有改變它。

回答

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) 
initalization獲得通過

他們不會有配置。如果現有的上下文是獲取與getOrCreate

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

只有一些(不是default.parallelism)將被應用。

想知道如何設置分割數

對於RDD輸入使用Hadoop配置(mapred.min.split.size):, Number of Partitions of Spark DataframeWhy does partition parameter of SparkContext.textFile not take effect?

相關問題