首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在hive表中加载多行列数据?具有新行字符的列

如何在hive表中加载多行列数据?具有新行字符的列
EN

Stack Overflow用户
提问于 2016-10-03 20:59:06
回答 1查看 3.5K关注 0票数 3

我在Excel文件中有一列(不是最后一列),其中包含跨越几行的数据。

列的某些单元格为空,有些单行条目。

当另存为.CSV文件或以制表符分隔.txt和excel时,所有多行数据和少数单行条目都会生成双引号,空白字段都不会用引号括起来。某些单行条目不在引号内。

是否可以将具有相同结构的数据存储在hive表中?如果是,如何实现?我知道我需要在双引号内转义所有的LF,并处理最后一个LF作为实际的EOL。但一旦遇到'\n‘,Hive就会将数据转移到新行。

excel中的数据格式如下:

代码语言:javascript
复制
|------+------+--------+------------------+-------+------|
|row1: | col1 | col2   | col3(multi-line) | col4  | col5 |
|------+------+--------+------------------+-------+------|
|      |      |        | line 1 of 3      |       |      |
|row2: | abc  | defsa  | line 2 of 3      | bcde  | hft  |
|      |      |        | line 3 of 3      |       |      |
|------+------+--------+------------------+-------+------|
|row3: | abc2 | defsa2 | (blank)          | bcde2 | hft2 |
|------+------+--------+------------------+-------+------|
|row4: | abc3 | defsa3 | single-line1     | bcde3 | hft3 |
|------+------+--------+------------------+-------+------|
|row5: | abc4 | defsa4 | single-line2     | bcde4 | hft4 |
|------+------+--------+------------------+-------+------|

当另存为CVS时,它会输出到以下内容:

第1行--COL1,col2,col3(多行),col4,col5

第2行--abc,defsa,第1行,共3行“,,,

第3行-第2行,共3行,,,

第4行-第3行,共3行,,,

第5行--“,bcde,hft

第6行--abc2,defsa2,,bcde2,hft2

第7行--abc3,defsa3,单行1,bcde3,hft3

第8行--ABC4,defsa4,单行2“,,,

第9行--“,bcde4,hft4

5行excel到9行csv。

在不改变结构和维护多行列的情况下,尽可能将输入从该.csv文件存储到配置单元表中。

EN

回答 1

Stack Overflow用户

发布于 2016-10-03 21:26:21

From this link,则提供的SerDe无法处理嵌入的新行。我的猜测是,如果您想要嵌入新行,则必须创建一个自定义SerDe。无需深入研究,this是一个很好的资源,可以帮助您创建自定义SerDe。

您是否尝试过在将数据加载到配置单元之前使用Pig处理数据,例如,在将数据加载到配置单元之前,您可以将\n字符替换为其他字符。但您可能会遇到同样的问题,无法准确地将其加载到Pig中,因为它可能使用相同的SerDe。

最终,自定义SerDe将解决您的问题,但我没有看到另一种更简单的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39832280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档