我正在创建 Greenplum 外部表并用我的地图中的数据填充它,减少 hdfs 中存在的输出文件。我能够将外部表连接到 HDFS 并访问这些目录中存在的所有文件。所有文件都有逗号分隔格式的值。
例如,我有两个文件 Employee 和 Student 有逗号作为分隔符:
员工:
id, name, company, status
1, XYZ, Greenplumb, Online
2, ABC, Big Data, Available
学生:
name, courses, description
ABC, Hadoop, This course is about hadoop. (newline character) . It will help
understand what hadoop is and how to play with big data using hadoop.
所以现在当我为员工文件创建一个外部表时,它可以正常工作。因此,对于 Employee 文件中的每一行,都会在外部表中创建一行。(分隔符是逗号)。
但是当我尝试为学生文件创建外部表时,它会出错。因为描述列具有包含 NEWLINE 字符馈送的值。因此,每当外部表遇到新的换行符时,它都会将其视为记录的结尾,并开始将每个换行符之后的值视为新记录。
我已经尝试过的事情:
- 将上述描述值放入双引号中,将其视为完整的字符串。但它没有成功。
- 从 map reduce 本身的数据中删除换行符提要,但这使我的数据不可读。所以不是一个选择。
谁能建议我如何处理这个问题。提前致谢。