Hadoop 如何在配置单元表中加载多行列数据?具有新行字符的列

Hadoop 如何在配置单元表中加载多行列数据?具有新行字符的列,hadoop,hive,apache-pig,bigdata,Hadoop,Hive,Apache Pig,Bigdata,我在Excel文件中有一列(不是最后一列),其中包含跨越几行的数据 列的某些单元格为空,某些单元格有单行条目 当保存As.CSV文件或从Excel中分离TAXT时,所有的多行数据和很少的单行条目都是用双引号生成的,所有空白字段都没有引号。有些单行条目不在引号内 是否可以将具有相同结构的数据存储在配置单元表中?如果是,如何做到这一点? 我知道我需要在双引号内转义所有LF,并仅将最后一个LF作为实际EOL处理。但一旦遇到“\n”,配置单元就会将数据移到新行 excel中的数据格式如下: |-----

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

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

当保存As.CSV文件或从Excel中分离TAXT时,所有的多行数据和很少的单行条目都是用双引号生成的,所有空白字段都没有引号。有些单行条目不在引号内

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

excel中的数据格式如下:

|------+------+--------+------------------+-------+------|
|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 |
|------+------+--------+------------------+-------+------|
保存为CV时,它会输出到以下位置:

行1—列1、列2、列3(多行)、列4、列5
第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文件中的输入存储到配置单元表中。

,提供的SerDe无法处理嵌入的新行。我的猜测是,如果您想要嵌入新行,您必须创建一个自定义SerDe。在不深入研究的情况下,这是一个很好的资源,可能有助于创建自定义SerDe

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

最终,定制SerDe将解决您的问题,但可能还有另一种更简单的方法我没有看到