我目前正在处理一个javamapreduce作业,它应该将数据输出到一个带方框的配置单元表。我想到两种方法:首先通过hcatalog直接写入hive。问题是,这种方法不支持写入带扣的配置单元表。因此,当使用带扣的配置单元表时,我需要首先写入非带扣的表,然后将其复制到带扣的表。第二个选项是将输出写入文本文件,然后将此数据加载到配置单元中。这里的最佳做法是什么?哪种方法在处理大量数据时更有效(就内存和所用时间而言)?如果我也可以使用无扣Hive表,哪种方法会更好?谢谢!
zbdgwd5y1#
对于非嵌套表,可以将mapreduce输出存储在表存储位置。那你就只需要跑了 MSCK REPAIR TABLE 使用新分区更新元数据。hive的load命令实际上只是将数据复制到表存储位置。此外,根据hive文档:clustered by和sorted by创建命令不影响数据插入表的方式,只影响数据的读取方式。这意味着用户必须小心地正确插入数据,方法是指定reducer的数量等于bucket的数量,并在查询中使用cluster-by和sort-by命令。所以您需要调整mapreduce输出以适应这些约束。
MSCK REPAIR TABLE
1条答案
按热度按时间zbdgwd5y1#
对于非嵌套表,可以将mapreduce输出存储在表存储位置。那你就只需要跑了
MSCK REPAIR TABLE
使用新分区更新元数据。hive的load命令实际上只是将数据复制到表存储位置。
此外,根据hive文档:
clustered by和sorted by创建命令不影响数据插入表的方式,只影响数据的读取方式。这意味着用户必须小心地正确插入数据,方法是指定reducer的数量等于bucket的数量,并在查询中使用cluster-by和sort-by命令。
所以您需要调整mapreduce输出以适应这些约束。