使用不同结构导入Hive中的多个文件

时间:2015-11-13 18:11:59

标签: python csv hadoop hive

我有两个问题,请帮我解决。

问题1:文件结构 我有3个包含这些列的文件:

  • log_in.csv(request_id,date_in,origin)
  • log_out.csv(request_id,date_out,destination)
  • request.csv(request_id,date_request,user)

每个文件都是在不同时刻写的,所以“日期”不一样。如果请求完成,request_id在所有文件中都是相同的。

例:

log_out.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

log_in.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

request.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在白天具有相同的名称,我如何正确构建我的diretory并加载文件?

按原样执行:

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
.
.
.

提前谢谢

1 个答案:

答案 0 :(得分:0)

@Otavio R. Rossi:如果数据已经在hdfs中,您可以创建3个(外部)表,登录,注销和请求

类似的东西,

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls|SecurityProtocolType.Tls11 |SecurityProtocolType.Tls12;

现在这些表格可以按日期或年/月/日进行分区,具体取决于您的使用情况。

此外,如果您正在寻找关联,可以考虑通过连接request_id上的所有3个表来将所有数据加载到一个表中。希望这有帮助!