2016-03-24 11 views
1

私はKafkaのスパークストリームから来る400個のフィールドでかなり大きなRDDを持っています。ストリームを変換して最終的にRDDストリームを書き込むときに最初のRDDストリームからいくつかのフィールドを選択して、弾性検索。Spark RDDのフィールドを選択します

フィールド名で自分のフィールドを知っていますが、フィールドインデックスはわかりません。

特定のフィールドをフィールド名で新しいマップに投影するにはどうすればよいですか?

+1

あなたは地図にあなたのエントリを変換してみてください、あなたは何をしたいフィールドを選択します。または、データフレームにあなたのRDDを変換して、あなたがしたいフィールドをも選択することができます。それにもかかわらず、あなたの質問にはもっと詳細が必要であり、そのためにはかなり広いです。 – eliasah

+0

あなたはどのような種類のファイルを読んでおり、どのようにrddを作成していますか? @eliasahは正しいです、私たちは本当にここであなたを助けるのに十分な情報がありません。 –

+0

@eliasahええ、基本的にKakfaからデータを読み込んで、それを別のRDDに変換しています。ちょうど把握しようとしている部分は、他のフィールドに基づいて新しいフィールドの値を設定する方法です。私は恐らく地図を使ってそれを解決することができます.... Scala/Spark ;-)の初心者です –

答えて

1
  1. 各フィールドは区切り文字 '#'で区切られていると仮定します。最初の行またはヘッダーファイルを使用して各フィールドのインデックスを決定し、いくつかのデータ構造に格納することができます。その後、この構造を使用して項目を決定し、新しいマップを作成することができます。

  2. Apache Avro形式を使用してデータを前処理することができます。これにより、フィールドに基づいてデータにアクセスできるようになり、String内のインデックスについての知識は必要ありません。以下のリンクは、AvroとKafkaおよびSparkを統合するための出発点です。

http://aseigneurin.github.io/2016/03/04/kafka-spark-avro-producing-and-consuming-avro-messages.html

関連する問題