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
中得到以下错误
的帮助下找到了解决方案
如果您在基于 Web 的界面中使用 Sqoop 的东西,那么您实际上是在使用 Sqoop2
您必须自己下载并安装 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/
Sqoop2 主目录是 /var/lib/sqoop2/
restart 复制到JDBC驱动文件后的Sqoop2服务
5a。 “连接器”是一个 Sqoop 的东西,它如何与 Hadoop 中的各种进程进行通信。除非你有更多的经验,否则它应该只是“generic-jdbc-connector”
5b。 Class 路径是“com.microsoft.sqlserver.jdbc.SQLServerDriver”
- “管理连接”中的连接字符串是这样的:jdbc:sqlserver://192.168.1.102:1433(尽管端口号默认为 1433)
对于作业的操作:
架构名称:我只是将其留空,而是粘贴到我想要的 TSQL 查询中
– 如果您在下面指定一个 TSQL 语句,那么这需要为空白
Table 名称:我将此留空,而是在 TSQL 中全部完成。
– 如果您在下面指定一个 TSQL 语句,那么这需要为空白
Table SQL 语句:粘贴到您的查询中(您可以在 SSMS 中制作它并将其粘贴到此处)。然后,将其附加到它的末尾:+and+${CONDITIONS}。 ${CONDITIONS} 扩展为您可以在此字段下方指定的分区列名称的某些值范围。
Table 列名:如果要限制实际提取的列,请将它们输入。
分区列名:确保此列以某种方式建立索引——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 ()”。
如果您弄乱了在 Hue/Sqoop2 中创建的连接,请注意您必须再次输入密码
如果出现错误,不要打它——你必须通过 SSH 登录并查看 /var/log/sqoop2/sqoop2.log
如果您的作业失败,并且在您正在查询的 SQL 服务器上的 SQL Server Profiler 中,您只会看到带有“where … (1 = 0)”的查询…”,检查你的防火墙规则:集群中的所有节点都需要能够与 SQL 服务器实例对话。是的,Sqoop 将在您的集群中分发各种分区查询:)
我们安装了集群 Hadoop
服务器并使用 Hue
作为接口,我们的目标是将数据从 MS SQL Server
sqooping 到 Hadoop
。我们找到了教程 here
但是我在 Hue
如果您在基于 Web 的界面中使用 Sqoop 的东西,那么您实际上是在使用 Sqoop2
您必须自己下载并安装 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/
Sqoop2 主目录是 /var/lib/sqoop2/
restart 复制到JDBC驱动文件后的Sqoop2服务
5a。 “连接器”是一个 Sqoop 的东西,它如何与 Hadoop 中的各种进程进行通信。除非你有更多的经验,否则它应该只是“generic-jdbc-connector”
5b。 Class 路径是“com.microsoft.sqlserver.jdbc.SQLServerDriver”
- “管理连接”中的连接字符串是这样的:jdbc:sqlserver://192.168.1.102:1433(尽管端口号默认为 1433)
对于作业的操作:
架构名称:我只是将其留空,而是粘贴到我想要的 TSQL 查询中 – 如果您在下面指定一个 TSQL 语句,那么这需要为空白
Table 名称:我将此留空,而是在 TSQL 中全部完成。 – 如果您在下面指定一个 TSQL 语句,那么这需要为空白
Table SQL 语句:粘贴到您的查询中(您可以在 SSMS 中制作它并将其粘贴到此处)。然后,将其附加到它的末尾:+and+${CONDITIONS}。 ${CONDITIONS} 扩展为您可以在此字段下方指定的分区列名称的某些值范围。
Table 列名:如果要限制实际提取的列,请将它们输入。
分区列名:确保此列以某种方式建立索引——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 ()”。
如果您弄乱了在 Hue/Sqoop2 中创建的连接,请注意您必须再次输入密码
如果出现错误,不要打它——你必须通过 SSH 登录并查看 /var/log/sqoop2/sqoop2.log
如果您的作业失败,并且在您正在查询的 SQL 服务器上的 SQL Server Profiler 中,您只会看到带有“where … (1 = 0)”的查询…”,检查你的防火墙规则:集群中的所有节点都需要能够与 SQL 服务器实例对话。是的,Sqoop 将在您的集群中分发各种分区查询:)