hadoop表在cli中显示了配置单元分区,但不能通过终端访问

jogvjijk  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(232)

当我使用show partitions命令时,我可以在配置单元中看到日期分区。但是,当我尝试通过hadoopfs-ls/path/to/partition访问文件夹时,我得到一条消息:没有这样的文件或目录。
我不知道为什么会这样?即使没有数据,我也不能转到那个日期分区文件夹吗(我也不能把数据移到这个分区)

vddsk6oq

vddsk6oq1#

您必须遵循以下步骤:
创建托管/内部表

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/
jgwigjjp

jgwigjjp2#

如何在配置单元中创建外部分区表

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/';

这里datepart是您的分区。一旦创建了分区表,就需要添加partition.using ALTER TABLE . 查询如下:

ALTER TABLE test_table ADD PARTITION(datepart='20150515');

那就做吧 hdfs dfs -ls /user/hdfs/data/ 您将得到一个名为 datepart=20150515 低于 /user/hdfs/data/ 目录。 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);

相关问题