2016-05-20 7 views
0

Ich habe eine TypedTipe[(String, String, Long)], wobei der erste String nur eine begrenzte (~ 10) Anzahl von Werten annehmen kann. Ich möchte meine Ausgabe so partitionieren, dass ein Ordner für jeden Typ erstellt wird (I. E. 10 Ordner mit dem Namen der ersten Zeichenfolge). Dies ist in Hive einfach zu erreichen, aber ich kann keine elegante Methode finden, dies in Brühen zu tun. Die Methode def partition(p: T => Boolean): (TypedPipe[T], TypedPipe[T]) bricht das Rohr in 2 Teile, tut aber nicht das, wonach ich suche.Vertikale Partitionierung beim Brühen

EDIT

  • Ich bin mit Scalding v0.13.1
  • Ich brauche eine PackedAvroSource

Antwort

1

schreiben Wenn Sie Gruppe durch das Feld, das Sie partitionieren von möchten, können Sie dann PartitionedDelimitedSource verwenden um die Verzeichnisstruktur nach Bedarf zu schreiben. Bsp:

val pipe: TypedPipe[(String, String, Long)] = ... 
pipe 
    .groupBy(_._1) 
    .write(PartitionedDelimited[String, (String, String, Long)](args("output"), "%s")) 
+0

Mein 'Gruppiert [K, (String, String, Long)]' lässt mich nicht 'schreiben' ... Könnte das ein Versions-Problem sein? Gibt es auch eine Möglichkeit, eine 'GepackteAvroSource' mit der gleichen Technik zu schreiben? – Gevorg

+0

Ich kann 'PartitionedDelimited' auch nicht in meinem Klassenpfad finden. Es gibt 'PartitionedDelimitedSource', aber es braucht mehr Argumente. – Gevorg