hadoop - 在配置单元中处理换行符

标签 hadoop hive

我在 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 子句,它也没有实现)。

  1. 编写自定义 InputFormat,使用 RecordReader 了解非换行符分隔的记录。查看代码 LineReader/LineRecordReaderTextInputFormat
  2. 使用格式 除了 text/ASCII,比如 Parquet。我会推荐这个 无论如何,因为文本可能是您可以存储数据的最糟糕的格式 无论如何。

关于hadoop - 在配置单元中处理换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26339564/

相关文章:

java - Pydoop 作业未运行

Mysql 空值 sqoop 导入到 hive

hadoop - GROUP BY 语句 HiveQL

hadoop - 从Hive与Druid互动时出错

hadoop - 在两节点 hadoop 集群中运行映射缩减作业时出错 : Too many fetch-failures, 读取任务输出时出错 http://localhost:50060/tasklog

java - 如何对 Accumulo 中的列限定符字段执行聚合?

java - Mahout 随机森林分类器示例 ArrayIndexOutOfBoundsException

hadoop - hadoop跨数据库查找表

hadoop - 从 Hadoop Hue 下载 csv 文件返回不可读的代码

hadoop - 我在 Ubuntu 上安装了 Hadoop。如果我运行 Hadoop 命令,我会得到 "Unable to load native-hadoop library"