我在同一HDFS位置中大约有10个文件。所有文件都具有完全相同的列(大约15列),每列大约100行。每个文件代表我在过去10个月中收到的数据(数据每月更新一次)。我想创建一个HIVE表,将所有数据合并到表中。该表应具有15列,其中包含约1,000行数据。
我尝试使用通常用于创建表的代码(请参见下文),但是当我运行以下脚本时,该脚本执行但仅从一个文件中获取数据,而从另一个文件中获取数据。
CREATE EXTERNAL TABLE database.tablename (
UserID INT,
UserName String,
Department String,
State String
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/location/of/the/file/'
TBLPROPERTIES ("skip.header.line.count"="1");
我没有收到任何错误,但是我只得到一些数据,而不是全部。我应该使用完全不同的语法吗?还是可以编辑上面的脚本以获得所需的结果?
任何帮助将不胜感激!附言对于Hadoop / HIVE来说,这是非常新的东西,因此当我受到这些不同场景的打击时,我正在尝试学习。谢谢大家!
答案 0 :(得分:0)
您能否一次确保所有文件都放在'/location/of/the/file/'
位置下。
如果在表指向位置('/location/of/the/file/')
内有多个目录,则在当前的配置单元会话中设置以下参数并运行查询:
SET hive.mapred.supports.subdirectories=TRUE;
SET mapred.input.dir.recursive=TRUE;