2016-06-27 4 views
-1

Так у меня есть этот код:искры, используя только одно ядро ​​на параллелизм задачи

conf = SparkConf().setAll((
    ("spark.python.profile", "true" if args.profile else "false"), 
    ("spark.task.maxFailures", "20"), 
    ("spark.driver.cores", "4"), 
    ("spark.executor.cores", "4"), 
    ("spark.shuffle.service.enabled", "true"), 
    ("spark.dynamicAllocation.enabled", "true"), 
)) 

# TODO could this be set somewhere in cosr-ops instead? 
executor_environment = {} 
if config["ENV"] == "prod": 
    executor_environment = { 
     "PYTHONPATH": "/cosr/back", 
     "PYSPARK_PYTHON": "/cosr/back/venv/bin/python", 
     "LD_LIBRARY_PATH": "/usr/local/lib" 
    } 

sc = SparkContext(appName="Common Search Index", conf=conf, environment=executor_environment) 

# First, generate a list of all WARC files 
warc_filenames = list_warc_filenames() 

# Then split their indexing in Spark workers 
warc_records = sc.parallelize(warc_filenames, 4).flatMap(iter_records) 

В то время как lounches все свечи вещи он использует все ядра.

Но когда он начинает выполнять задачу (индексирование), тогда он использует только 1 ядро ​​на 100%.

Как сделать одну задачу искры, используя все ядра?

+2

Это ничего не сделает ... он не вызывает действие –

+0

Он делает, itter_records содержит работу. – IvRRimUm

+0

Когда его вызываемый он начинает индексировать warc bodys на ES-кластеры. – IvRRimUm

ответ

0

Проблема была в самом питоне, не используя все ядра. Я реализовал многопоточность.

Спасибо всем, кто помог.

Смежные вопросы