【发布时间】:2021-03-09 23:29:19
【问题描述】:
我的目标是将多个文件中的条目合并到一张表中,但在到达那里时遇到了一些麻烦。
所以我知道您可以通过以下方式将所有条目添加到表中:
CREATE EXTERNAL TABLE tablename
(
teams STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION 'hdfs:///hive-data';
每个文本文件的数据如下所示:
student#A18645
student#V86541
student#X78543
但是,使用上面的代码,这会将 N 个文件中的所有数据合并到我的目录中,这使得合并数据变得困难。我想要的是将所有文件中的第一个条目连接到一个字符串中并输入到一个新表中,依此类推。 我尝试使用 ROW_NUMBER() 对每个条目进行编号,但这并没有给出它们在文件中的位置数,而是在表本身中。
因此,有没有一种方法可以为每个文件创建一个表,对条目进行编号,并将所有表连接在一起,以便最终得到一个如下所示的表:
number students
1 student#A18645,student#D94655,...student#S45892
2 student#V86541,student#D45645,...student#F46444
3 student#X78543,student#T78722,...student#M99846
或者更确切地说,一种将每个条目编号为它来自的文件的行号的方法,这样我就可以在我的表上进行内部连接。
注意:文件的数量可能会有所不同,因此我没有设置循环的文件数量
【问题讨论】: