java—是否可以在mr作业之外将数据写入hdfs,并且仍然使用hive进行查询?

1szpjjfi  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(385)

我使用的是mr工作的基本代码。此作业的输入和输出都是可空写的。我必须使用这个框架,但我还必须将此作业中的数据写入hdfs。此外,我写的数据必须可以通过配置单元进行查询。
有办法吗?
我知道如何通过java中的hadoop文件系统api导航和操作文件。我遇到的主要问题是如何通过配置单元查询这些文件。

np8igboo

np8igboo1#

最简单的方法是创建一个指向hdfs中某个位置的外部配置单元表。然后让mr作业以与配置单元方案一致的格式将文件写入同一位置(反之亦然,创建配置单元方案以匹配mr作业输出的预期格式)。

create external table if not exists dbname.tblname 
(field1 STRING
,field2 STRING
,field3 STRING)
row format delimited
lines terminated by ‘\n’
fields terminated by ‘,’
stored as textfile
location ‘hdfs_path’;

然后,如果mr作业将带有field1、field2和field3的csv文件写入hdfs\u路径,则可以通过此外部表查询它们。

相关问题