JDBC MS 的驱动程序 Class SQL 在 Hue 中找不到服务器

JDBC Driver Class for MS SQL Server is not found in Hue

我们安装了集群 Hadoop 服务器并使用 Hue 作为接口,我们的目标是将数据从 MS SQL Server sqooping 到 Hadoop。我们找到了教程 here

但是我在 Hue

中得到以下错误

我在 http://capnjosh.com/

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

  2. 您必须自己下载并安装 SQL 服务器的 JDBC 驱动程序 – curl -L 'http://download.microsoft.com/download/0/2/A/02AAE597-3865-456C-AE7F-613F99F850A8/sqljdbc_4.0.2206.100_enu.tar.gz' | tarxz – 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. restart 复制到JDBC驱动文件后的Sqoop2服务

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

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

  1. “管理连接”中的连接字符串是这样的:jdbc:sqlserver://192.168.1.102:1433(尽管端口号默认为 1433)

对于作业的操作:

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

  2. Table 名称:我将此留空,而是在 TSQL 中全部完成。 – 如果您在下面指定一个 TSQL 语句,那么这需要为空白

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

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

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

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

  7. 如果出现错误,不要打它——你必须通过 SSH 登录并查看 /var/log/sqoop2/sqoop2.log

  8. 如果您的作业失败,并且在您正在查询的 SQL 服务器上的 SQL Server Profiler 中,您只会看到带有“where … (1 = 0)”的查询…”,检查你的防火墙规则:集群中的所有节点都需要能够与 SQL 服务器实例对话。是的,Sqoop 将在您的集群中分发各种分区查询:)