在Hue中找不到MS SQL Server的JDBC驱动程序类

时间:2015-12-15 17:42:01

标签: sql-server hadoop jdbc sqoop hue

我们安装了一个集群Hadoop服务器并使用Hue作为我们的界面,我们的目标是从MS SQL ServerHadoop的sqooping数据。我们找到了一个教程here

但是我在Hue

中收到了以下错误

enter image description here

1 个答案:

答案 0 :(得分:0)

我在http://capnjosh.com/

的帮助下找到了解决方案
  1. 如果您在基于网络的界面中使用Sqoop内容,那么您实际上是在使用Sqoop2

  2. 您必须自己下载并安装SQL Server的JDBC驱动程序 - 卷曲-L'http://download.microsoft.com/download/0/2/A/02AAE597-3865-456C-AE7F-613F99F850A8/sqljdbc_4.0.2206.100_enu.tar.gz'|焦油xz - sudo cp sqljdbc_4.0 / enu / sqljdbc4.jar / var / lib / sqoop2 / - 当你在它的时候,你也可以把它放在sqoop目录中:sudo cp sqljdbc_4.0 / enu / sqljdbc4.jar / var / lib / sqoop /

  3. Sqoop2主目录是/ var / lib / sqoop2 /

  4. 在JDBC驱动程序文件

  5. 中复制后重新启动Sqoop2服务

    5a上。 “Connector”是一个Sqoop的东西,它与Hadoop中的各种进程进行通信。除非你有更多的经验,否则它应该只是“generic-jdbc-connector”

    5b中。类路径是“com.microsoft.sqlserver.jdbc.SQLServerDriver”

    1. “管理连接”中的连接字符串如下所示:jdbc:sqlserver://192.168.1.102:1433(尽管端口号默认为1433)
    2. 对于工作的行动:

      1. 架构名称:我只是将其留空,而是粘贴到我想要的TSQL查询中 - 如果您在下面指定TSQL语句,那么这需要为空白

      2. 表名:我把它留空,而是在TSQL中完成所有操作。 - 如果您在下面指定TSQL语句,那么这需要为空白

      3. 表SQL语句:粘贴到您的查询中(您可以在SSMS中制作它并将其粘贴到此处)。然后,将其附加到它的末尾:+和+ $ {CONDITIONS}。 $ {CONDITIONS}扩展为您可以在此字段下指定的分区列名称的某些值范围。

      4. 表列名称:如果要限制实际提取的列,请将它们放入。

      5. 分区列名称:确保以某种方式索引此列 - Sqoop首先查询最小值和最大值,然后发出一系列查询,这些查询根据此列值返回所有行的均匀分布部分。例如交易表;我在分区列名中指定了事务日期列; sqoop获取最小和最大日期;然后,Sqoop发出一系列查询,用“where transDate> ='2015-01-01'和transDate<替换$ {CONDITIONS} '2015-04-01'“(为每个查询移动该窗口)。每个查询都可以从群集中的任何节点发送(虽然我打赌你可以限制那些节点)12。分区中的空格列:如果你这样做有空,这有助于Sqoop.13。您可以手动指定Sqoop用于获取分区列名称的最小值/最大值的查询(默认情况下,它看起来像“select min(),max()from()”。 / p>

      6. 如果您弄乱了在Hue / Sqoop2中创建的连接,请注意您必须再次输入密码

      7. 如果您遇到错误,请不要打架 - 您必须通过SSH登录并查看/var/log/sqoop2/sqoop2.log

      8. 如果您的作业失败,并且在您查询的SQL Server上的SQL Server Profiler中,您只看到其中包含“where ...(1 = 0)...”的查询,请检查您的防火墙规则:所有群集中的节点需要能够与SQL Server实例通信。是的,Sqoop将在您的集群中分发各种分区查询:)