我在 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
数据加载到hive后,由于默认的行结束符是\n,hive无法读取description列,因此显示为NULL值。谁能建议在加载到配置单元之前如何处理换行符。
最佳答案
我知道这个问题很老了,但你有几个选择。您无法使用 FIELDS TERMINATED BY
来控制它,因为它只控制终止字段的内容,而不是记录。 Hive 中的记录被硬编码为由换行符终止(即使有 LINES TERMINATED BY
子句,它也没有实现)。
- 编写自定义
InputFormat
,使用RecordReader
了解非换行符分隔的记录。查看代码LineReader
/LineRecordReader
和TextInputFormat
。 - 使用格式 除了 text/ASCII,比如 Parquet。我会推荐这个 无论如何,因为文本可能是您可以存储数据的最糟糕的格式 无论如何。
关于hadoop - 在配置单元中处理换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26339564/