我有一个典型的CREATE TABLE
语句,如下所示:
CREATE EXTERNAL TABLE temp_url (
MSISDN STRING,
TIMESTAMP STRING,
URL STRING,
TIER1 STRING
)
row format delimited fields terminated by '\t' lines terminated by '\n'
LOCATION 's3://mybucket/input/project_blah/20140811/';
/ 20140811 /是一个内部包含千兆字节数据的目录。
装载东西不是问题。但是,查询任何内容都会使Hive停顿下来,并给我带来许多
MapRed
错误。因此,我想问一问是否有一种方法可以仅加载/ 20140811 /中的部分数据。我知道我可以从文件夹中选择一些文件,将它们转储到另一个文件夹中,然后使用它,但这似乎很繁琐,尤其是当我拥有20个左右的/ 20140811 /目录时。
是否有这样的事情:
CREATE EXTERNAL TABLE temp_url (
MSISDN STRING,
TIMESTAMP STRING,
URL STRING,
TIER1 STRING
)
row format delimited fields terminated by '\t' lines terminated by '\n'
LOCATION 's3://mybucket/input/project_blah/Half_of_20140811/';
我也欢迎非 hive 式答案。也许
s3cmd
中有一种方法可以快速获取/ 20140811 /中的一定数量的数据,并将其转储到/ 20140811_halved /中。谢谢。
最佳答案
我建议以下解决方法:
您添加了尽可能多的过滤条件以过滤出数据并加载。
希望这对您有所帮助。