hadoop—当文件不在目录中时将其从hdfs加载到配置单元的替代方法

krcsximq  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(283)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '${database_delimiter}'
LINES TERMINATED BY '\n' STORED AS TEXTFILE
LOCATION '${database_location}/Person';

这里的人应该是一个目录。而person是part-m文件而不是目录。

olmpazwi

olmpazwi1#

如果我正确理解了这个问题,那么hive确实无法在文件上创建表。它必须是一个目录位置。
因此,无论您有什么过程,都需要生成所述目录。
例如,无论您有什么Map程序进程,您都需要指定一个输出目录,如果您没有这样做,那么您的文件将被放置在其他文件旁边的某个位置(mapreduce应该会失败,因为目标目录已经存在。
您可以做的是将所有零件文件移动到新位置

$ hdfs dfs -mkdir -p ${database_location}/Person/
$ # create hive table using that location
$ hdfs dfs -mv  ${database_location}/part-m* ${database_location}/Person/
$ # run hive query

或者,如果你有原始文件,你可以做类似的事情

$ hdfs dfs -mkdir -p ${database_location}/Person/
$ # create hive table using that location
$ hdfs dfs -put somefile ${database_location}/Person/
$ # run hive query

或使用 LOCAL DATA INPATH 从一个hdfs位置读取到配置单元表

相关问题