Talend-从Java应用程序中的ThasimPort组件读取值-如何?
我是Talend的新手,目前正在写我的第一份Talend工作 我正在做以下工作: 查询一个MySQL db表SELECT*FROM docs,其中DocName='XYZ'将使用tHashInput返回少量记录 使用tHashOutput将这些记录存储在内存中 使用tHashInput从内存中获取这些记录 并使用tLogRow组件记录记录 我正在从Java应用程序运行此Talend作业,如下所示:Talend-从Java应用程序中的ThasimPort组件读取值-如何?,java,mysql,talend,Java,Mysql,Talend,我是Talend的新手,目前正在写我的第一份Talend工作 我正在做以下工作: 查询一个MySQL db表SELECT*FROM docs,其中DocName='XYZ'将使用tHashInput返回少量记录 使用tHashOutput将这些记录存储在内存中 使用tHashInput从内存中获取这些记录 并使用tLogRow组件记录记录 我正在从Java应用程序运行此Talend作业,如下所示: FetchDocuments mySQLConnectorJob = new FetchDocum
FetchDocuments mySQLConnectorJob = new FetchDocuments();
mySQLConnectorJob.runJob(new String[]{});
最后,我想在Java应用程序中以某种方式获取这些记录,例如使用某种方法:
mySQLConnectorJob.getResultSet();
我知道我们可以使用tFileOutputDelimited组件将这些记录存储在CSV文件中,然后在Java应用程序中解析该文件以获取记录,但如果可能的话,我希望避免使用该文件
我的问题是:
您知道如何在Java应用程序中获取记录并完成此任务吗?
若我的泰伦德工作设计不好,你们能给我一些建议,如何改变它,以能够完成任务?
谢谢,
尼纳德
您可以使用tJavaFlex或tJava将记录存储在mySQLConnectorJob的实例对象中。然后从实例对象获取这些值。
我找到了将tHashInput组件中的值存储到globalMap对象并在Java应用程序中获取这些值的方法。 所以在tHashInput组件之后,我放置了tJavaRow组件。在tJavaRow组件中,我创建了一个新的HashMap,并在该映射中放置了db表记录。之后,我将HashMap实例放在同一tJavaRow组件中的globalMap中
//Instantiate metadata Map
java.util.Map<java.lang.String, java.lang.Object> docMetadata =
new java.util.HashMap<java.lang.String, java.lang.Object>();
//Fetch document metadata and put it in the Map
docMetadata.put("documentID", metadata1.DocumentID);
docMetadata.put("documentName", metadata1.DocumentName);
docMetadata.put("creator", metadata1.Creator);
//Put metadata in global Map
globalMap.put("docMetadata", docMetadata);
metadata1是tHashInput组件到tJava组件的连接名称。当我在Java应用程序中开始工作时,我使用Java反射获取了globalMap。Hi@Chandra Prakash,感谢您的建议。我已经看过了作业的代码,这个查询记录集存储在rs_tMysqlInput_1变量中,该变量在tMysqlInput_1处理方法的范围内,因此我不知道/不知道如何使用tJava或tJavaFlex将其放入其他对象中,但我也在考虑这个方向。如果你知道我们如何做到这一点,你能给我一些小例子,如何做到这一点?