2

正規表現 SerDe を使用して、テキスト ファイルからハイブ テーブルを作成しようとしています。私は簡単に始めて、テキスト ドキュメント内の各単語を行に解析したいだけです。各行には 1 つの列があり、それが単語です。

私が使用している正規表現は ([a-zA-z]+) です

そして、これは私がハイブに発行しているcreate tableコマンドの後半です.

行フォーマット SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "([a-zA-Z]+)", "output.format.string" = "% 1$s" ) テキストファイルとして保存されます。

現在、テーブルにはほとんどすべて NULL が含まれています。

どんな助けでも素晴らしいでしょう、ありがとう!

4

1 に答える 1

0

入力を逆シリアル化するとき、RegExSerDe は、提供された正規表現に対して入力行が完全に一致することを期待します。一致しない場合、行のすべての列が NULL になります。

入力からすべての単語を分割するには、別のアプローチを取る必要があります。まず、入力をそのままテーブルにロードします。次に、入力に対して空白の分割を行い、それを分解して、個々の単語を取得します。追加のマッチングとフィルタリングを実行して、不要な句読点を削除することが必要な場合があります。

CREATE TABLE input (text STRING);
LOAD DATA LOCAL INPATH 'input.txt' INTO TABLE input;
SELECT word FROM input LATERAL VIEW explode(split(text, ' ')) words AS word;
于 2012-05-27T13:25:35.903 に答える