2013-08-01 76 views
1

我用管道分隔符創建了一個外部配置單元表。我所有的列都是Strings類型的。文件中的一個值是一段文字。我不明白的是,爲什麼Hive會終止這段文本,並在沒有管道的情況下將它放入下一列。該段中有很多連續的空格。當Hive試圖讀取文件時,這可能是一個問題。示例文本是:Hive讀取文件不正確

'...SATA   Hooper Size \= 6000...'. 

Hive將零件放到SATAA中,然後放在columnA中的下一個零件中。它重複了這一點,我認爲無論空格太長。任何線索爲什麼這樣做,以及如何解決這個問題?這是否就像是有很多連續的空格,Hive認爲字符串已經結束?

+0

如果你在SATA和Hooper之間放置了一個管道符號,它實際上是在那一點上分裂? –

+0

@sonic我試着按照你的要求做,通過在記事本(file.txt)中複製一行並編輯一個文件並在它們之間放置一個管道並用UTF-8編碼保存它。我創建了另一個表並加載了這個文件。但Hive拋出一個異常說'不是有效的文件'。原始文件是地圖縮小作業的輸出。 – user2441441

+0

你如何在hadoop輸出中添加管道符號?在減速機中? –

回答

1

我曾經有類似的問題,因爲無形的字符。

1.下載數據到本地。

2.Either你應該有管道分隔符,或者你有一個新的行字符那裏。

確認,打開VI的文件,並檢查(不可見的)字符。

+0

我只是做了這個,並在gVim和記事本+ +中檢查它,不,這些詞之間沒有隱藏的管道。 – user2441441

+0

甚至更​​棒的是:假設有Col1,Col2,Col3,Col4,Col5。 Hive在Col1中放置一部分直到SATA,然後在Col3中放入'Hooper Size \ = 6000'。 (是的,Col2是空白的)然後將下一個單詞在Col5中說'代碼H \ = 40'。我不知道爲什麼。 – user2441441

+0

你可以試試vi –