2016-05-20 2 views
0

私はTypedTipe[(String, String, Long)]を持っていますが、最初のStringは限られた数(〜10)しか取れません。私の出力を分割して、各タイプ(最初の文字列の名前を持つI.E. 10フォルダ)ごとにフォルダを作成するようにしたいと思います。これはHiveで実現するのは簡単ですが、私はScaldingでそれを行うエレガントな方法を見つけることができません。メソッドdef partition(p: T => Boolean): (TypedPipe[T], TypedPipe[T])はパイプを2つに分割しますが、私が探しているものは処理しません。スケーリング時の垂直パーティショニング

EDIT

  • 私は火傷v0.13.1
  • を使用しています、私はあなたがして、パーティションするフィールドでグループ、あなたがしてPartitionedDelimitedSourceを使用できる場合PackedAvroSource

答えて

1

を作成する必要があります必要に応じてディレクトリ構造を記述します。例:

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

私の 'グループ化された[K、(String、String、Long)]'は私に '書き込み'をさせません...これはバージョンの問題でしょうか?また、同じ手法で 'PackedAvroSource'を書く方法がありますか? – Gevorg

+0

私のクラスパスに 'PartitionedDelimited'も見つかりません。 'PartitionedDelimitedSource'がありますが、より多くの引数が必要です。 – Gevorg