0

私はハイブに慣れていないので、私の質問が初心者の場合は優しくしてください:-)

次のハイブ ステートメントを使用して、データを作成し、テーブルに読み込みます。

CREATE TABLE entities_extract (doc_id STRING, name STRING, type STRING, len STRING, offset    STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/research/45924/hive/entities_extract';

LOAD DATA LOCAL INPATH '/home/researcher/hadoop-runnables/files/entitie_extract_by_doc.txt' OVERWRITE INTO TABLE entities_extract;

これまでのところ、このスクリプトを実行してもエラーは発生しません。奇妙なことに、テーブルで select * from を実行すると、結果に null 値を持つ 4 つの余分な列が表示される

入るデータは次のようになります。

USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Chanko   PERSON   6   41086

select から返されるデータは次のようになります。

USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Chanko   PERSON   6   41086   NULL    NULL    NULL    NULL

編集:「entitie_extract_by_doc.txt」の小さなサブセットの下

USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Berkowitz   PERSON   9   385
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Marotolli   PERSON   939420
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Corzatt   PERSON   7   39772
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Berkowitz   PERSON   9  40314
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Corzatt   PERSON   7   40584
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Berkowitz   PERSON   9  40840
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Rich   PERSON   4   41038
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Lea   PERSON   3   41044
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Anthony   PERSON   7   41049
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Bill   PERSON   4   41062
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Nelson   PERSON   6   41067
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Barbara   PERSON   7   41078
USER.A-GovDocs-f83c6ca3-9585-4c66-b9b0-f4c3bd57ccf4   Chanko   PERSON   6   41086

ソースデータを見て、余分なタブが 4 つあるかどうかを確認しましたが、そうではありませんでした..

これらの 4 つの追加の列がどこから来たのか、ここにいる人は誰でも知っていますか?

敬具、

マルティン

4

2 に答える 2

0

ここでは外部テーブルを作成していないため、場所について言及する必要はありません。クエリから場所を削除すると、正しい値が得られます。

于 2016-04-22T12:35:10.023 に答える
0

\n同じ列の一部である文字列データ内にある可能性があるものはすべて置き換える必要があります。それらの余分なものは、余分\nな列を作成している可能性があります。

select regexp_replace(mensaje,"\n"," ") from partido where id = "1e2af";
于 2013-04-28T08:33:04.413 に答える