从SQL Server 2016或更高版本查询HIVE表

时间:2018-01-03 20:34:19

标签: sql-server hadoop hive hiveql

我正在尝试从SQL Server查询我的Hortonworks群集Hive表。我的情景如下:

  • HDP 2.6,Ambari,HiveServer2
  • SQL Server 2016 Enterprise
  • 用于HDP中安全登录的Kerberos配置

我正在阅读SQL Server 2016中的PolyBase服务,我想更高版本。但是,我意识到,根据documentation,这项服务将在SQL Server中执行的操作是一个桥接,可以访问我的HDFS并根据此数据源重新创建外部表。

否则我所期待的是查询Hive对象,例如这些对象也是SQL Server对象,例如链接服务器。

有人有一个例子或者知道在SQL Server和Hive中是否可以这样做吗?

非常感谢

2 个答案:

答案 0 :(得分:0)

Hive更多地充当作业编译器而不是数据库。这意味着您正在编写的每个SQL语句都将被转换为Hadoop的作业,发送到集群并在那里执行。从用户的角度来看,它看起来像查询表。

通过读取HDFS数据源并在SQL Server中重新创建它已经提到过的方法是正确的。由于Hive和数据库服务器都是不同的技术,因此在技术上对我来说似乎不太可能。

Hive现在提供了一个可用于连接它的JDBC接口。但即使使用Hive JDBC,每个查询最终都将作为分布式计算的集群作业,在HDFS中运行文件,创建结果集并呈现给您。

答案 1 :(得分:0)

如果要从SQL Server查询Hive,可以下载ODBC驱动程序(Microsoft或Hortonsworks)并为Hive创建数据源名称(DSN)。在高级选项中,选中使用原生查询。然后在SQL Server中创建一个新的链接服务器,其数据源名称与ODBC驱动程序中的数据源名称相同。

写openquery之类的东西:

select top 100 * from 
    openquery(HadoopLinkedServer,
              'column1, column2 from databaseInHadoop.tableInHadoop')