当我使用命令show partitions时,可以在Hive中看到日期分区。但是,当我尝试通过hadoop fs -ls/path/to /分区访问文件夹时,我收到消息没有这样的文件或目录。该表显示CLI中的Hive分区,但无法通过终端访问
我不确定这是为什么? 我不应该能去那个日期分区的文件夹,即使没有在它的数据(我也无法将数据移动到该分区)
当我使用命令show partitions时,可以在Hive中看到日期分区。但是,当我尝试通过hadoop fs -ls/path/to /分区访问文件夹时,我收到消息没有这样的文件或目录。该表显示CLI中的Hive分区,但无法通过终端访问
我不确定这是为什么? 我不应该能去那个日期分区的文件夹,即使没有在它的数据(我也无法将数据移动到该分区)
你有如下遵循:
创建托管/内部表
CREATE TABLE stations(number STRING, latitude INT, longitude INT, elevation INT, name STRING, country STRING) PARTITIONED BY (year int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
LOAD DATA LOCAL INPATH "/home/cloudera/Desktop/Stations_2014.csv" INTO TABLE stations PARTITION(year=2014);
要创建外部表
CREATE EXTERNAL TABLE external_stations(number STRING, latitude INT, longitude INT, elevation INT, name STRING, country STRING) PARTITIONED BY (year int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/user/hive/external/';
ALTER TABLE external_stations ADD PARTITION (year=2014);
hadoop fs -put /home/cloudera/Desktop/Stations_2014.csv /user/hive/external/year=2014/
是表已经使用外部创建表命令创建。是否可以使用hadoop命令和分区删除文件夹,以便仍然显示在Hive CLI的列表中? – user2441441
您必须使用hadoop命令创建目录,然后更改分区,然后将该文件从本地移至配置单元表的hadoop位置 – Farooque
谢谢。我在hdfs中创建了目录并移动了数据,并在Hive CLI中可见。我认为在外部配置单元表中创建分区时也会创建HDFS文件夹分区。 – user2441441
如何在蜂巢
创建一个外部分区表CREATE EXTERNAL TABLE IF NOT EXISTS test_table (
attribute INT,
attribute1 STRING,
attribute2 STRING)
PARTITIONED BY (datepart STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/user/hdfs/data/';
这里日期部分是你所创建的分区表,那么你需要添加partition.using ALTER TABLE
您partition.Once。查询会是这样:
ALTER TABLE test_table ADD PARTITION(datepart='20150515');
然后做hdfs dfs -ls /user/hdfs/data/
,你会得到一个名为/user/hdfs/data/
目录下datepart=20150515
。 datepart=20150515
这是你的分区目录,因此你的目录结构将/user/hdfs/data/datepart=20150515/
现在,您可以将数据加载到使用从本地文件系统hdfs dfs -put
命令该目录。 如果您的数据已经在HDFS位置可用,那么您可以使用LOAD DATA INPATH
命令将数据加载到分区表 中,或者您可以使用hdfs dfs -mv
命令将数据从hdfs位置移动到另一个hdfs位置。
假设如果你想删除一个分区,那么你可以使用这样的查询。
ALTER TABLE test_table DROP IF EXISTS PARTITION(datepart=20150515);
您可以提供创建表的完整步骤。你在做什么?您是否在创建分区表后添加了分区?创建表命令后,您应该添加分区命令是:ALTER TABLE tbl_name ADD PARTITION(dt ='20151505')。 –