我在 HDFS 中有一个日志文件,值用逗号分隔。例如:
2012-10-11 12:00,opened_browser,userid111,deviceid222
现在我想将此文件加载到具有列“timestamp”、“action”并按“userid”、“deviceid”分区的 Hive 表中。如何要求 Hive 将日志文件中的最后 2 列作为表的分区?所有示例e.g. "hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');"
都需要在脚本中定义分区,但我希望从 HDFS 文件自动设置分区。
一种解决方案是创建包含所有 4 列的中间非分区表,从文件中填充它,然后创建一个INSERT into first_table PARTITION (userid,deviceid) select from intermediate_table timestamp,action,userid,deviceid;
但那是额外的任务,我们将有 2 个非常相似的表。或者我们应该创建外部表作为中间表。