2012-04-25 4 views
2

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

私が使用している正規表現がある([a-zA-Z]の+)

そして、これは私がハイブに発行していますCREATE TABLEコマンドの後半で、

行形式のSERDE「組織( "input.regex" = "([a-zA-Z] +)"、 "output.format.string" = "%1 $ s")を使用して、.apache.hadoop.hive.contrib.serde2.RegexSerDe ' STEXED AS TEXTFILE;

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

何か助けが素晴らしい、ありがとう!

+0

テーブルにはほとんどすべてのNULLが含まれていると述べました。どうしたらいいですか? NULL以外の列がいくつかありますか?あなたはあなたのデータの小さなサンプルを提供していただけますか? –

答えて

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; 
関連する問題