テキストを含むスパークデータフレームの列があります。スパークデータフレームの文字列から単語を抽出します。
特殊文字'@'
で始まるすべての単語を抽出し、そのテキスト列の各行からregexp_extract
を使用しています。テキストに'@'
で始まる複数の単語が含まれている場合は、最初のテキストのみが返されます。
私はスパークのパターンに一致する複数の単語を抽出したいと考えています。
data_frame.withColumn("Names", regexp_extract($"text","(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9_]+)",1).show
サンプル入力:@always_nidhi @YouTube no i dnt understand bt i loved the music nd their dance awesome all the song of this mve is rocking
出力例:@always_nidhi,@YouTube
関数定義によると、regexp_extractは最初の一致のみを返し、可能なすべての一致を見つけるためにテキスト全体を反復処理しません。すべての一致について反復処理を行い、結果をリストとして返すためには、独自のUDFを書く必要があります。 –
こんにちは@AmitKumar、それで助けてください。私はスカラとスパークに慣れておらず、学びたいと思っています。 – Sree51
サンプルデータと期待される出力を投稿できますか? – philantrovert