sqoop从db2导入到hdfs的问题

我正在尝试使用sqoop将数据从DB2导入到hdfs。由于我没有将db2jcc4.jar复制到/ var / lib / sqoop /目录的管理员权限,因此我将jar复制到了要执行的位置,并使用--libjars选项指定了该jar。

    sqoop import \
   --libjars db2jcc4.jar \
   --driver com.ibm.db2.jcc.DB2Driver \
   --connect 'jdbc:db2://<hostname>:50000/<dbname>' \
   --username <username> \
   --password <password> \
   --table <tablename> \
   --target-dir /hdfs path

我收到如下错误:

   20/04/15 15:16:59 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: com.ibm.db2.jcc.DB2Driver
java.lang.RuntimeException: Could not load db driver class: com.ibm.db2.jcc.DB2Driver
        at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:875)
        at org.apache.sqoop.manager.GenericJdbcmanager.getconnection(GenericJdbcmanager.java:52)
        at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:763)
        at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:786)
        at org.apache.sqoop.manager.SqlManager.getcolumnInfoForRawQuery(SqlManager.java:289)
        at org.apache.sqoop.manager.SqlManager.getcolumnTypesForRawQuery(SqlManager.java:260)
        at org.apache.sqoop.manager.SqlManager.getcolumnTypes(SqlManager.java:246)
        at org.apache.sqoop.manager.Connmanager.getcolumnTypes(Connmanager.java:327)
        at org.apache.sqoop.orm.ClassWriter.getcolumnTypes(ClassWriter.java:1858)
        at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1657)
        at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:106)
        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:494)
        at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:621)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
        at org.apache.sqoop.Sqoop.main(Sqoop.java:252)

任何人都可以帮助我解决问题

a305069347 回答:sqoop从db2导入到hdfs的问题

连接到Db2不仅需要db2jcc4.jar,还需要其相应的许可证JAR,通常是db2jcc_license_cisuz.jar或db2jcc_license_cu.jar。要使用的许可证JAR的文件名取决于您将访问的Db2服务器的操作系统:

  • db2jcc_license_cu.jar可以访问Linux,UNIX和Windows Db2服务器
  • db2jcc_license_cisuz.jar可以访问所有Db2服务器平台,包括z / OS和IBM i

如果可能,请让您的DBA为您提供db2jcc4.jar的正确发行版以及适合您的Db2环境的许可JAR。否则,您可以从https://www.ibm.com/support/pages/download-db2-fix-packs-version-db2-linux-unix-and-windows从IBM免费下载用于JDBC和SQLJ的IBM数据服务器驱动程序。就许可证JAR而言,该网站上可用的JCC驱动程序只能包括db2jcc_license_cu.jar,而不能包括db2jcc_license_cisuz.jar。

db2jcc JAR(驱动程序和许可证)都需要在程序使用的任何类路径变量中列出。对于sqoop,环境变量为using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Simplified_Ms.Paint { public partial class Form1 : Form { Graphics g; int x = -1; int y = -1; bool moving = false; Pen pen; public Form1() { InitializeComponent(); g = panel1.CreateGraphics(); pen = new Pen(Color.Black,5); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; pen.StartCap = pen.EndCap = System.Drawing.Drawing2D.LineCap.Round; } private void panel2_Click(object sender,EventArgs e) { } private void panel1_MouseDown(object sender,MouseEventArgs e) { moving = true; x = e.X; y = e.Y; panel1.Cursor = Cursors.Cross; } private void panel1_MouseMove(object sender,MouseEventArgs e) { if (moving && x != -1 && y != -1) { g.DrawLine(pen,new Point(x,y),e.Location); x = e.X; y = e.Y; } } private void panel1_MouseUp(object sender,MouseEventArgs e) { moving = false; x = -1; y = -1; panel1.Cursor = Cursors.Default; } private void pictureBox1_Click(object sender,EventArgs e) { PictureBox p = (PictureBox)sender; pen.Color = p.BackColor; moving = true; } private void pictureBox2_Click(object sender,EventArgs e) { PictureBox p = (PictureBox)sender; pen.Color = p.BackColor; moving = true; } private void pictureBox3_Click(object sender,EventArgs e) { PictureBox p = (PictureBox)sender; pen.Color = p.BackColor; moving = true; } private void pictureBox4_Click(object sender,EventArgs e) { PictureBox p = (PictureBox)sender; pen.Color = p.BackColor; moving = true; } private void pictureBox5_Click(object sender,EventArgs e) { PictureBox p = (PictureBox)sender; pen.Color = p.BackColor; moving = true; } } }``` ,并且在运行sqoop时可能还需要指定HADOOP_CLASSPATH选项。

--libjars
本文链接:https://www.f2er.com/2433560.html

大家都在问