在配置单元中处理换行符

o7jaxewo  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(360)

我在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。

pkmbmrz7

pkmbmrz71#

默认情况下,配置单元采用换行符('\n')作为分隔符。可以使用以下方法更改分隔符:

ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
rslzwgfq

rslzwgfq2#

请尝试在hive-site.xml中添加以下属性,或者您也可以尝试临时配置单元会话级别。
hive.query.result.fileformat=序列文件

mtb9vblg

mtb9vblg3#

我知道这个问题很老了,但你有几个选择。你不能控制这一切 FIELDS TERMINATED BY ,因为这只控制终止字段的内容,而不控制记录的内容。配置单元中的记录被硬编码为以换行符终止(即使有 LINES TERMINATED BY 子句,则未执行)。
编写自定义 InputFormat 使用一个 RecordReader 理解非换行分隔记录的。看看你的密码 LineReader / LineRecordReader 以及 TextInputFormat .
使用文本/ascii以外的格式,如parquet。不管怎样,我还是建议这样做,因为文本可能是最糟糕的数据存储格式。

相关问题