在配置单元中导入具有不同结构的多个文件

xpcnnkqh  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(340)

我有两个问题,请帮我解决。
问题1:文件结构我有3个文件有以下列:
login.csv(请求\u id、日期\u in、来源)
logout.csv(请求\u id、日期\u out、目的地)
request.csv(请求id、请求日期、用户)
每个文件在不同的时刻写入,因此“日期”不相同。如果请求完成,则所有文件中的请求id都相同。
例如:
注销.csv

request_id |       date_out      |  destination
    1      | 2015-11-13 01:02:02 | 192.168.0.7
    3      | 2015-11-13 05:01:05 | 192.168.0.5
    4      | 2015-11-13 03:09:02 | 192.168.0.10

登录.csv

request_id |       date_in       |    origin
    1      | 2015-11-13 01:02:03 | 192.168.0.10
    2      | 2015-11-13 02:03:04 | 192.168.0.9
    4      | 2015-11-13 03:09:02 | 192.168.0.3

请求.csv

request_id |       date_in       |  user
    1      | 2015-11-13 01:02:01 | user1
    2      | 2015-11-13 02:03:01 | user2
    3      | 2015-11-13 02:03:01 | user1
    4      | 2015-11-13 03:09:01 | user3

存储这些文件的更好方法是什么?
问题2:目录
如果hdfs中的文件每天都有相同的名称,如何正确地构造目录并加载这些文件?
按现状举例:

LOGS / 20151113 / log_out.csv
LOGS / 20151113 / log_in.csv
LOGS / 20151113 / request.csv
LOGS / 20151114 / log_out.csv
LOGS / 20151114 / log_in.csv
LOGS / 20151114 / request.csv
.
.
.

先谢谢你

deikduxw

deikduxw1#

@奥塔维奥r。rossi:如果数据已经在hdfs中,您可以创建3个(外部)表、login、logout和request
比如说,

CREATE EXTERNAL TABLE login(
     request_id INT,
     date_out TIMESTAMP,
     destination STRING
     )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '|'
    STORED AS TEXTFILE;
    LOAD  DATA  INPATH  'hdfs location'

现在,这些表可以根据您的使用情况按日期或年/月/日进行分区。
另外,如果您正在寻找相关性,您可以考虑将所有的数据加载到一个表中,方法是根据请求将所有3个表连接起来。希望这对您有所帮助!

相关问题