4

列が ^A で区切られ、行が '\n' 改行文字で区切られているファイルがあります。

最初に HDFS にアップロードしてから、次のようなコマンドを使用して Hive にテーブルを作成します。

CREATE EXTERNAL TABLE 
IF NOT EXISTS 
html_sample 
( ts string, 
  url string, 
  html string) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\001' 
LINES TERMINATED BY '\n' 
LOCATION '/tmp/directoryname/';

ただし、そのテーブルに対してselectステートメントを実行すると。それは混乱であることが判明しました。

テーブルは次のようになります。

ts              url                    html
10082013        http://url.com/01      <doctype>.....style="padding-top: 10px;
text-align...   NULL                   NULL 
text-align...   NULL                   NULL
text-align...   NULL                   NULL
10092013        http://url.com/02      <doctype>.....style="padding-top: 10px;
text-align...   NULL                   NULL 
text-align...   NULL                   NULL
text-align...   NULL                   NULL

次に、テキスト ファイルに戻り、ファイル内にいくつかの ^M 文字が存在することを発見しました。これにより、HIVE はその ^M を改行文字として扱います。

最初にファイルを作成したとき、各レコードが 1 行になるように、意図的にすべての改行文字を html から削除しました。ただし、HIVE が ^M を改行文字として扱うことができる方法を理解できません。ファイルを変更せずにそれを回避するにはどうすればよいですか。

(VI または sed でグローバル置換を実行できる可能性があることは知っていますが、HIVE が ^M を \n として扱う方法はあまり意味がありません)

4

1 に答える 1