HBase/Phoenix 的ODBC驱动程序

3
我需要将Tableau连接到HBase或Phoenix,但Tableau不支持JDBC。很遗憾!
我阅读了关于Simba专有驱动程序的信息,但没有看到有人使用它的报告。当情况并不理想时,我不想交钱,我的雇主也是这样想的。
是否有其他方法将Tableau连接到HBase或Phoenix?其他人是如何做到的?我不喜欢使用Hive连接HBase的想法,因为远离Hive的主要原因之一是它的性能极差,所以我希望这不是我的“最佳”选择。
另一方面,如果人们使用了Simba并且运行良好,我很想听听那方面的见解。

你正在寻找开源选项吗? - Ram Ghadiyaram
2个回答

1

我是Simba的Phoenix驱动程序开发人员。Hortonworks、Cloudera、Databricks、Microsoft、Amazon、Google等公司都选择Simba的驱动程序来支持各种产品。

例如:http://hortonworks.com/partner/simba/

http://www.simba.com/news/databricks-offers-simba-technologies-developed-odbc-3-8-connectivity-sql-capability-apache-spark/

此外,您需要选择Phoenix on HBase或HBase独立版用于所有应用程序。这两种类型的驱动程序以不同的二进制表示编码数据。字符串和无符号整数将被正确解释,但无符号整数和更复杂的数据类型将被解码为不同的值。例如:Phoenix不能正确显示负整数值
因此,如果您在应用程序中使用Phoenix JDBC,您不能使用HBase ODBC驱动程序与Tableau一起使用(除非您的数据源仅包含字符串和无符号整数)。从您发布的其他帖子中可以看出,您确实使用了Phoenix JDBC。因此,HBase ODBC对您来说不是一个选项。

为什么我不能分别使用JDBC和ODBC?我只使用JDBC通过sqlline连接。 - Ian
如果您使用Phoenix插入有符号整数或双精度浮点数,并尝试从HBase驱动程序中读取它,您将得到与插入的值不同的值。这是因为Phoenix以不同于仅使用HBase的格式对数据进行编码。因此,如果您从使用Phoenix驱动程序的Java应用程序插入数据,当您使用HBase驱动程序从Tableau读取DSN时,您将获得不正确的值。 - kliew
问题不在于JDBC与ODBC,而在于Phoenix与HBase编码。您应该使用HBase进行JDBC和ODBC,或者使用Phoenix进行JDBC和ODBC。从您的其他问题中,似乎您已经选择了Phoenix JDBC以进行Spark集成,因此我建议您使用Phoenix ODBC。但是,如果您不需要Phoenix的Spark集成,则HBase可能适用于您的用例。 - kliew
啊,所以当我通过Phoenix/Spark插入数据并通过HBase ODBC驱动程序读取时,我会得到垃圾数据。明白了。你知道是否有Phoenix ODBC驱动程序吗? - Ian
那么HBase驱动程序如何“知道”返回哪些数据类型给Tableau呢?毕竟所有数据都是以字节形式存储的。 - Ian
嘿@Ian,如果你想尝试Phoenix驱动程序,请在Simba(http://www.simba.com/contact-us/)联系我们,我们可以为您提供早期版本以供尝试。我建议使用Phoenix而不是HBase,因为Phoenix将SQL处理移至集群中,而HBase大多数处理在客户端完成。或者,您可以免费使用我们现有的HBase驱动程序,链接在这里(http://www.simba.com/drivers/hbase-odbc-jdbc/)。 - KylePorter

0

CData ODBC驱动程序将允许您将Tableau连接到HBase(完全披露:我为CData Software工作)。 您可以在此处下载免费的Betahere。 我们有一篇article概述了配置和连接,但我已经复制了相关信息步骤:

  1. 通过设置服务器地址和端口(我们使用REST API,因此默认端口为8080),从ODBC驱动程序创建/配置DSN
    • 您应该在DSN配置向导中单击“测试连接”按钮,以确保您可以建立与HBase数据库的正确连接。
  2. 单击“连接到数据”选项,找到“其他数据库(ODBC)”,然后选择您配置的DSN
  3. 选择CData作为数据库
  4. 输入表名称(或将表字段留空并单击搜索(放大镜)以查看表列表)。

一旦您可以访问这些表格,您可以像在Tableau中操作其他任何表格一样使用它们(将表格拖到连接区域,操纵度量和维度以查看数据等)。如果您有任何问题,我或我们的支持团队都会很乐意帮助您。


谢谢!我非常确定我们的IT部门看到这是一个测试版后不会很高兴。这对他们来说将是一个重要因素... - Ian
我完全理解。我们可能能够提供一个预发布的完整版本,但从@kliew的回复中可以看出,直接连接到HBase的ODBC连接对于您的用例来说并不可行。如果您不是非常依赖Phoenix/Spark,我们还提供了一个HBase的JDBC驱动程序,您可以将其集成到现有的解决方案中。 - Jerod Johnson
JDBC和Tableau不兼容,很遗憾。我可能会重写代码以适应HBase,但这需要一些努力。 - Ian
抱歉有些混淆,我的意思是你可以直接在当前基于Java的实现中使用JDBC驱动程序与HBase(而不是Phoenix/Spark)连接,并单独使用ODBC驱动程序从HBase连接到Tableau。 - Jerod Johnson
1
我明白了。ODBC驱动程序如何知道如何将HBase中的字节“解释”为时间戳或双精度浮点数? - Ian
很好的问题!我们的驱动程序将以两种方式之一解释数据类型。我们有一种自定义脚本语言,允许您为“表”创建静态模式,定义数据集中“列”的名称、类型和路径。或者,我们将对数据进行行扫描,根据在行扫描中发现的内容智能地“打字”。 - Jerod Johnson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接