當我使用命令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')。 –