Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 在配置单元中,如何仅将部分原始数据加载到表中?_Hadoop_Hive_S3cmd - Fatal编程技术网

Hadoop 在配置单元中,如何仅将部分原始数据加载到表中?

Hadoop 在配置单元中,如何仅将部分原始数据加载到表中?,hadoop,hive,s3cmd,Hadoop,Hive,S3cmd,我有一个典型的CREATETABLE语句,如下所示: 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

我有一个典型的CREATETABLE语句,如下所示:

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/是一个目录,其中包含千兆字节的数据

装载东西不是问题。然而,查询它上面的任何内容都会阻塞蜂巢,只会给我一些映射错误

因此,我想问一下,是否有办法只加载/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/';
我也愿意接受非蜂群的答案。也许在s3cmd中有一种方法可以快速获取/20140811中的一定数量的数据/将其转储到/20140811\u减半/或其他什么东西中


谢谢。

我建议以下解决方法:

创建具有相同结构的临时表。使用like 插入新表格,从旧表格中选择*限制1000; 您可以添加尽可能多的筛选条件以筛选出数据并加载


希望这对您有所帮助。

既然您说您有20个左右的/20140811/目录,为什么不尝试在这些目录上创建一个包含分区的外部表,并在单个分区上运行查询。

您的文件有命名模式吗?在这种情况下,您可以使用通配符过滤/移动文件。我建议您在尝试查询表时实际调试错误,而不是处理错误。Hive设计用于查询TB级的数据。也许您打算使用s3n://而不是s3://?您的意思是,在/project_blah/上创建一个表,然后添加/20140811/作为分区?这不就是使用/20140811/的全部内容吗?如果是这样,那就是我要避免的。您能告诉我您正在创建配置单元表的文件夹的目录结构吗?/20140811/?它只是一个文件夹,里面有文件。所述文件的名称为0000cee31wfa00\U part01或类似的名称-也指蜂巢吐出的文件。好的……那么您是否可以为ex创建一个文件夹以及20140811,20140811_2并将原始201408文件夹中的多个文件之一放入此新文件夹,然后在两个目录20140811和20140811_2上创建分区。在查询时,您可以专门在20140811_2上指定该搜索。这将防止查询对整个数据执行操作,并将运行得更快这可能是最简单的解决方案,但我希望避免对初始表进行任何选择位置限制,因为这会占用时间。如果将impala同步到同一个配置单元元存储,此过程可能需要不到一分钟的时间。