Hadoop 当文件不在目录中时,将文件从HDFS加载到配置单元的替代方法

Hadoop 当文件不在目录中时,将文件从HDFS加载到配置单元的替代方法,hadoop,hive,hdfs,hiveql,Hadoop,Hive,Hdfs,Hiveql,这里的人应该是一个目录。然而person是一个part-m文件,而不是一个目录。如果我正确理解了这个问题,那么Hive确实无法在文件上创建表。它需要是一个目录位置 因此,无论您有什么进程,都需要创建所述目录 例如,无论您有什么映射程序进程,您都需要指定一个输出目录,如果您没有这样做,那么您的文件将放在其他文件旁边的某个位置。但是,如果说目标目录已经存在,MapReduce应该会失败 可以做的是将所有零件文件移动到新位置 $hdfs dfs-mkdir-p${database_location}/

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

如果我正确理解了这个问题,那么Hive确实无法在文件上创建表。它需要是一个目录位置

因此,无论您有什么进程,都需要创建所述目录

例如,无论您有什么映射程序进程,您都需要指定一个输出目录,如果您没有这样做,那么您的文件将放在其他文件旁边的某个位置。但是,如果说目标目录已经存在,MapReduce应该会失败

可以做的是将所有零件文件移动到新位置

$hdfs dfs-mkdir-p${database_location}/人/ $create配置单元表使用该位置 $hdfs dfs-mv${database\u location}/part-m*${database\u location}/Person/ $run配置单元查询 或者,如果你有原始文件,你可以做类似的事情

$hdfs dfs-mkdir-p${database_location}/人/ $create配置单元表使用该位置 $hdfs dfs-放入某个文件${database_location}/Person/ $run配置单元查询
或者使用本地数据输入路径从一个HDFS位置读取到配置单元表

我有多个文件正在使用多文本输入格式存储。例如:{database_location}/personA{database_location}/personB{database_location}/personC我正试图将它加载到配置单元中,其中包含名为personA personB personC*多文本输出格式的表
ROW FORMAT DELIMITED FIELDS TERMINATED BY '${database_delimiter}'
LINES TERMINATED BY '\n' STORED AS TEXTFILE
LOCATION '${database_location}/Person';