Hive 如何将一个配置单元表与另一个远程配置单元表联接

Hive 如何将一个配置单元表与另一个远程配置单元表联接,hive,hbase,Hive,Hbase,我们有一个计算场景,我们需要对配置单元中的两个表执行连接操作 例如,在clusterA中,我们在配置单元中创建了一个表a,在clusterB中,我们在配置单元中创建了一个表B,该表映射到clusterB中的一个Hbase表。然后我们想在clusterA中的配置单元中编写以下SQL语句,如下所示: select a.col1, b.col2 from ta inner join tb@remote_hive on ta.col3 = tb.col3 就像Oracle中的概念数据库链接一样。 有没

我们有一个计算场景,我们需要对配置单元中的两个表执行连接操作

例如,在clusterA中,我们在配置单元中创建了一个表a,在clusterB中,我们在配置单元中创建了一个表B,该表映射到clusterB中的一个Hbase表。然后我们想在clusterA中的配置单元中编写以下SQL语句,如下所示:

select a.col1, b.col2 from ta inner join tb@remote_hive on ta.col3 = tb.col3
就像Oracle中的概念数据库链接一样。
有没有办法让我们这样做?如果是,你能给我们举个例子吗。

这(直接)是不可能的。但至少有两种解决方法:

  • 工具,如配置单元联合服务
  • 自Hive2.3.0以来,Hive2.3.0提供了一个新的接口,允许您通过jdbc查询远程表

每个配置单元查询都转换为一系列Hadoop作业,这些作业将提交给Hadoop作业跟踪器。对于Hadoop作业(映射器和还原器),任何配置单元表都只是位于同一文件夹(或该文件夹中的分区)下的HDFS文件的集合。问题是集群B上的HDFS文件在集群A上可能不可见。如果是这样,则与相关配置单元查询关联并在集群A上启动的Hadoop作业将无法从集群B读取HDFS文件。