Hive 配置单元错误地读取文件

Hive 配置单元错误地读取文件,hive,Hive,我已经创建了一个带有管道分隔符的外部配置单元表。我的所有列都是字符串类型。文件中的一个值是一段文本。我无法理解的是,为什么Hive在没有管道的情况下终止此文本并将其放在下一列中。那一段中有许多连续的空格。当配置单元尝试读取文件时,这可能是一个问题。示例文本为: '...SATA Hooper Size \= 6000...'. Hive将部分放在A列中,下一部分放在B列中。我认为当空格太长时,它会重复这一点。关于它为什么这样做以及如何解决这个问题,有什么线索吗?是不

我已经创建了一个带有管道分隔符的外部配置单元表。我的所有列都是字符串类型。文件中的一个值是一段文本。我无法理解的是,为什么Hive在没有管道的情况下终止此文本并将其放在下一列中。那一段中有许多连续的空格。当配置单元尝试读取文件时,这可能是一个问题。示例文本为:

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

Hive将部分放在A列中,下一部分放在B列中。我认为当空格太长时,它会重复这一点。关于它为什么这样做以及如何解决这个问题,有什么线索吗?是不是有很多连续的空格,Hive认为字符串已经结束了?

我曾经有过类似的问题,因为看不见的字符

1.将数据下载到本地

2.应该使用管道分隔符,或者在此处使用新行字符


要确认这一点,请在VI中打开文件并检查(不可见)字符。

我曾经因为不可见字符而遇到类似问题

1.将数据下载到本地

2.应该使用管道分隔符,或者在此处使用新行字符


要确认这一点,请在VI中打开文件并检查(不可见)字符。

如果您在SATA和Hooper之间放置管道符号,它是否真的在该点分裂???@sonic我尝试按照您的要求,复制记事本(file.txt)中的一行,编辑一个文件并在它们之间放置管道,然后用UTF-8编码保存。我创建了另一个表并加载了这个文件。但是Hive抛出一个异常,表示“不是有效文件”。原始文件是map reduce作业的输出。如何在hadoop输出中添加管道符号?在reducer?中,还要确保通过在映射器中指定“|”作为分隔符来正确创建表。产量不错。我可以很容易地检查它,因为它是文本格式的。问题是Hive无法正确读取它如果你在SATA和Hooper之间放置管道符号,它是否真的在那一点上分裂了???@sonic我试着按照你的要求在记事本(file.txt)中复制一行并编辑一个文件,在它们之间放置一个管道,然后用UTF-8编码保存它。我创建了另一个表并加载了这个文件。但是Hive抛出一个异常,表示“不是有效文件”。原始文件是map reduce作业的输出。如何在hadoop输出中添加管道符号?在reducer?中,还要确保通过在映射器中指定“|”作为分隔符来正确创建表。产量不错。我可以很容易地检查它,因为它是文本格式的。问题是Hive无法正确读取。我只是这样做了,并在gVim和Notepad++中进行了检查。不,这些单词之间没有隐藏的管道。更奇怪的是:假设有Col1,Col2,Col3,Col4,Col5。Hive在Col1中放入部分至SATA,然后在Col3中放入“Hooper Size\=6000”。(是的,Col2是空的)然后在Col5中输入下一个单词“代码H\=40”。我不知道为什么。Vim不是等同于Vi吗。u在最后的评论中说了gvim,这就是我提到Vi的原因,我也不知道gvim。我只是这样做,并在gvim和记事本++中检查了它,不,这些词之间没有隐藏的管道。更奇怪的是:假设有Col1,Col2,Col3,Col4,Col5。Hive在Col1中放入部分至SATA,然后在Col3中放入“Hooper Size\=6000”。(是的,Col2是空的)然后在Col5中输入下一个单词“代码H\=40”。我不知道为什么。Vim不是等同于Vi吗。u在最后的评论中说gvim这就是我提到Vi的原因,我也不知道gvim。