我正在使用 Hive 处理我的 CSV 文件。我已将 CSV 文件存储在 HDFS 中,并想从这些文件中创建表。
我使用以下命令:
create external table if not exists csv_table (dummy STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 'hdfs://localhost:9000/user/hive'
TBLPROPERTIES ("skip.header.line.count"="1");
LOAD DATA INPATH '/CsvData/csv_table.csv' OVERWRITE INTO TABLE csv_table;
所以下面的文件/CsvData
将被移动到/user/hive
. 这说得通。
但是如果我想创建另一个表怎么办?
create external table if not exists csv_table2 (dummy STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 'hdfs://localhost:9000/user/hive'
TBLPROPERTIES ("skip.header.line.count"="1");
LOAD DATA INPATH '/CsvData/csv_table2.csv' OVERWRITE INTO TABLE csv_table2;
它将引发一个异常,抱怨目录不为空。
ERROR : FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. Directory hdfs://localhost:9000/user/hive could not be cleaned up.
所以我很难理解,是不是意味着我只能存储一个文件理解一个目录?要存储多个文件,我必须为每个文件创建一个目录?
是否可以将所有文件存储在一起?