我们安装了一个集群Hadoop
服务器并使用Hue
作为我们的界面,我们的目标是从MS SQL Server
到Hadoop
的sqooping数据。我们找到了一个教程here
但是我在Hue
答案 0 :(得分:0)
如果您在基于网络的界面中使用Sqoop内容,那么您实际上是在使用Sqoop2
您必须自己下载并安装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 /
Sqoop2主目录是/ var / lib / sqoop2 /
在JDBC驱动程序文件
5a上。 “Connector”是一个Sqoop的东西,它与Hadoop中的各种进程进行通信。除非你有更多的经验,否则它应该只是“generic-jdbc-connector”
5b中。类路径是“com.microsoft.sqlserver.jdbc.SQLServerDriver”
对于工作的行动:
架构名称:我只是将其留空,而是粘贴到我想要的TSQL查询中 - 如果您在下面指定TSQL语句,那么这需要为空白
表名:我把它留空,而是在TSQL中完成所有操作。 - 如果您在下面指定TSQL语句,那么这需要为空白
表SQL语句:粘贴到您的查询中(您可以在SSMS中制作它并将其粘贴到此处)。然后,将其附加到它的末尾:+和+ $ {CONDITIONS}。 $ {CONDITIONS}扩展为您可以在此字段下指定的分区列名称的某些值范围。
表列名称:如果要限制实际提取的列,请将它们放入。
分区列名称:确保以某种方式索引此列 - Sqoop首先查询最小值和最大值,然后发出一系列查询,这些查询根据此列值返回所有行的均匀分布部分。例如交易表;我在分区列名中指定了事务日期列; sqoop获取最小和最大日期;然后,Sqoop发出一系列查询,用“where transDate> ='2015-01-01'和transDate<替换$ {CONDITIONS} '2015-04-01'“(为每个查询移动该窗口)。每个查询都可以从群集中的任何节点发送(虽然我打赌你可以限制那些节点)12。分区中的空格列:如果你这样做有空,这有助于Sqoop.13。您可以手动指定Sqoop用于获取分区列名称的最小值/最大值的查询(默认情况下,它看起来像“select min(),max()from()”。 / p>
如果您弄乱了在Hue / Sqoop2中创建的连接,请注意您必须再次输入密码
如果您遇到错误,请不要打架 - 您必须通过SSH登录并查看/var/log/sqoop2/sqoop2.log
如果您的作业失败,并且在您查询的SQL Server上的SQL Server Profiler中,您只看到其中包含“where ...(1 = 0)...”的查询,请检查您的防火墙规则:所有群集中的节点需要能够与SQL Server实例通信。是的,Sqoop将在您的集群中分发各种分区查询:)