0
Я вызываю собственные функции на основе JNI в операциях карты Spark.Медленная работа Spark на JNI на EC2
// Read each input from HDFS or S3
val A = info.sc.broadcast(fs.read(0, 4)) // 400 MB
val B = info.sc.broadcast(fs.read(1, 4)) // 400 MB
// Generate RDD
val index = info.sc.parallelize(0.toLong to SIZE-1 by 1)
// Perform Map operations --> the problematic part
val res = index.map{ x => nativeFunction(x, A, B) }.persist
// Fake action for profiling purpose
res.foreachPartition{ x => }
// Get the results back and write them in the HDFS or S3
val output = res.reduce(Util.bitor)
fs.write(2, output)
Когда я бегу это на EC2, выполнение отображения занимает около 4x больше, чем когда я запускаю его на локальном кластере с тем же partitionning и количество ядер.
Когда я запускаю функцию native вне Spark, выполнение эквивалентно, что доказывает, что это не из-за виртуализации EC2.
Любая идея причины?
Я только обнаружил, что проблема не возникает, если Спарк руки я группу (то есть без искрового ec2 сценария) на EC2 используя Ubuntu 14.04 AMI – elldekaa