我在hive中创建了一个表作为
Create table(id int, Description String)
我的数据如下:
1|This will return corrupt data since there is a ',' in the first string.
some text
Change the data
2|There is prob in reading data
sometext
数据加载到配置单元后,由于默认的行终止符为\n,配置单元无法读取描述列,因此显示空值。有人能建议如何处理新线前加载到Hive。
3条答案
按热度按时间pkmbmrz71#
默认情况下,配置单元采用换行符('\n')作为分隔符。可以使用以下方法更改分隔符:
rslzwgfq2#
请尝试在hive-site.xml中添加以下属性,或者您也可以尝试临时配置单元会话级别。
hive.query.result.fileformat=序列文件
mtb9vblg3#
我知道这个问题很老了,但你有几个选择。你不能控制这一切
FIELDS TERMINATED BY
,因为这只控制终止字段的内容,而不控制记录的内容。配置单元中的记录被硬编码为以换行符终止(即使有LINES TERMINATED BY
子句,则未执行)。编写自定义
InputFormat
使用一个RecordReader
理解非换行分隔记录的。看看你的密码LineReader
/LineRecordReader
以及TextInputFormat
.使用文本/ascii以外的格式,如parquet。不管怎样,我还是建议这样做,因为文本可能是最糟糕的数据存储格式。