我接收列是动态的文件。文件1可以是
column1 column2 column3 column4 column5 column6 column7
文件2可以是
column1 column2 column9 column10 column11 column12 column13
文件3可以是
column1 column2 column3 column10 column11
如何将配置单元表修改为将随文件一起接收的列。
k5hmc34c1#
这将非常混乱,但如果没有任何显式分隔符,最好的方法就是定义一个regexserde并捕获每一个可能的列。缺少的列基本上是一个可选的捕获组 ()? 另一种选择是让spark根据标题行推断模式和缺少的列(如果有的话)一旦在原始数据上获得一个文本表,就应该将其转换为适当的列数据格式。
()?
ljo96ir52#
hive希望结构是固定的,与任何rdbms保持一致。一个选项是,您可能希望包含所有文件中所需的完整列集(如果预先知道的话),并且只填充接收数据的列,而将其他列留空?
2条答案
按热度按时间k5hmc34c1#
这将非常混乱,但如果没有任何显式分隔符,最好的方法就是定义一个regexserde并捕获每一个可能的列。
缺少的列基本上是一个可选的捕获组
()?
另一种选择是让spark根据标题行推断模式和缺少的列(如果有的话)一旦在原始数据上获得一个文本表,就应该将其转换为适当的列数据格式。
ljo96ir52#
hive希望结构是固定的,与任何rdbms保持一致。
一个选项是,您可能希望包含所有文件中所需的完整列集(如果预先知道的话),并且只填充接收数据的列,而将其他列留空?