如何在Java程序中使用Sqoop?
我知道如何通过命令行使用sqoop。但是不知道如何使用java程序调用sqoop命令。任何人都可以提供一些代码视图吗?
我知道如何通过命令行使用sqoop。但是不知道如何使用java程序调用sqoop命令。任何人都可以提供一些代码视图吗?
您可以通过在类路径中包含 sqoop jar 并调用该方法来从 Java 代码内部运行 sqoop。您必须创建所需的参数,以便以编程方式进行 sqoop 操作,就好像它是命令行一样(例如 等)。Sqoop.runTool()
--connect
请注意以下事项:
Sqoop.runTool()
Sqoop.Main()
runTool()
希望有所帮助。
final int ret = Sqoop.runTool(new String[] { ... });
if (ret != 0) {
throw new RuntimeException("Sqoop failed - return code " + Integer.toString(ret));
}
断续器
在下面找到在Java程序中使用sqoop将数据从MySQL导入HDFS / HBase的示例代码。确保你的类路径中有 sqoop jar:
SqoopOptions options = new SqoopOptions();
options.setConnectString("jdbc:mysql://HOSTNAME:PORT/DATABASE_NAME");
//options.setTableName("TABLE_NAME");
//options.setWhereClause("id>10"); // this where clause works when importing whole table, ie when setTableName() is used
options.setUsername("USERNAME");
options.setPassword("PASSWORD");
//options.setDirectMode(true); // Make sure the direct mode is off when importing data to HBase
options.setNumMappers(8); // Default value is 4
options.setSqlQuery("SELECT * FROM user_logs WHERE $CONDITIONS limit 10");
options.setSplitByCol("log_id");
// HBase options
options.setHBaseTable("HBASE_TABLE_NAME");
options.setHBaseColFamily("colFamily");
options.setCreateHBaseTable(true); // Create HBase table, if it does not exist
options.setHBaseRowKeyColumn("log_id");
int ret = new ImportTool().run(options);
正如 Harel 所建议的,我们可以使用 run() 方法的输出进行错误处理。希望这有帮助。