2016-10-24 1 views
1

Если я знаю, что данный раздел набора данных находится на заданном сервере (например, предположим, что я знаю, что на этом сервере осколок или область базы данных находится на каком-то API метаданных конкретных баз данных) могу ли я использовать это при создании RDD через SparkContext.parallelize? В принципе, я хотел бы создать RDD из списка серверов, а для каждого сервера - создать совместно расположенный раздел RDD.Spark RDD affinity/Ручное коллокации разделов с данными

ответ

2

Это может быть достигнуто путем подкласса RDD и переопределения метода, приведенного ниже.

/** 
* Optionally overridden by subclasses to specify placement preferences. 
*/ 
protected def getPreferredLocations(split: Partition): Seq[String] = Nil 

Существует пример этого из Hortonworks здесь: https://github.com/hortonworks-spark/shc/blob/master/core/src/main/scala/org/apache/spark/sql/execution/datasources/hbase/HBaseTableScan.scala

Я закончил тем, что писал это до as a blog post

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