我正在尝试从SQL Server查询我的Hortonworks群集Hive表。我的情景如下:
我正在阅读SQL Server 2016中的PolyBase服务,我想更高版本。但是,我意识到,根据documentation,这项服务将在SQL Server中执行的操作是一个桥接,可以访问我的HDFS并根据此数据源重新创建外部表。
否则我所期待的是查询Hive对象,例如这些对象也是SQL Server对象,例如链接服务器。
有人有一个例子或者知道在SQL Server和Hive中是否可以这样做吗?
非常感谢
答案 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')