Spark repartitionAndSortWithinPartitions с кортежами - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь следовать этому примеру, чтобы разбить строки hbase: https://www.opencore.com/blog/2016/10/efficient-bulk-load-of-hbase-using-spark/

Однако у меня уже есть данные, хранящиеся в (String, String, String), где первый - это ключ строки, второй - столбец.имя и третье значение столбца.

Я пытался написать неявное упорядочение для достижения неявного OrderedRDD

 implicit val caseInsensitiveOrdering: Ordering[(String, String, String)] = new Ordering[(String, String, String)] {
    override def compare(x: (String, String, String), y: (String, String, String)): Int = ???
  }

, но repartitionAndSortWithinPartitions все еще недоступен.Есть ли способ, которым я могу использовать этот метод с этим кортежем?

1 Ответ

2 голосов
/ 26 мая 2019

СДР должен иметь ключ и значение, а не только значения, например:

val data = List((("5", "6", "1"), (1)))
val rdd : RDD[((String, String, String), Int)] = sparkContext.parallelize(data)
implicit val caseInsensitiveOrdering = new Ordering[(String, String, String)] {
  override def compare(x: (String, String, String), y: (String, String, String)): Int = 1
}
rdd.repartitionAndSortWithinPartitions(..)
...