当前位置: 首页 > 知识库问答 >
问题:

如何将侧边输入/额外输入传递到JdbcIO RowMapper Java

丰赞
2023-03-14

我正在尝试使用jdbcio.read在java beam中读取cloud SQL表。我想使用.WithRowMapper(Resultset Resultset)方法将Resultset中的每一行转换为GenericData.Record。是否有一种方法可以将JSON模式字符串作为输入传递给。WithRowMapper方法,如ParDo接受sideInputs作为PCollectionView

PCollection<String> avroSchema= pipeline.apply(JdbcIO.<String>read()
                .withDataSourceConfiguration(config)
                .withCoder(StringUtf8Coder.of())
                .withQuery("SELECT DISTINCT column_name, data_type \n" +
                        "FROM information_schema.columns\n" +
                        "WHERE table_name = " + "'" + tableName + "'")
                .withRowMapper((JdbcIO.RowMapper<String>) resultSet -> {
            // code here to generate avro schema string
           // this works fine for me

}))
 PCollectionView<String> s = avroSchema.apply(View.<String>asSingleton());

// I want to access this view as side input in next JdbcIO.Read operation
// something like this ;

pipeline.apply(JdbcIO.<String>read()
        .withDataSourceConfiguration(config)
        .withCoder(StringUtf8Coder.of())
        .withQuery(queryString)
        .withRowMapper(new JdbcIO.RowMapper<String>() {

            @Override
            public String mapRow(ResultSet resultSet) throws Exception {
                // access schema here and use it to parse and create 
               //GenericData.Record from ResultSet fields as per schema

                return null;
            }
        })).

    withSideInputs(My PCollectionView here); // this option is not there right now.

共有1个答案

燕琨
2023-03-14

此时,IOs API不接受SideInputs。

应该可以在读取和执行映射后立即添加ParDo。ParDo可以接受侧输入。

 类似资料:
  • 问题内容: 在SQL Server 2014中,我试图创建一个动态的WHERE子句。 我已将查询构建为字符串,但是当我尝试使用sp_executesql执行查询时,出现以下错误:提示 13您必须声明标量变量“ @desde”。 我不知道如何使sp_executesql识别输入参数。 问题答案: 代替 使用 您必须定义在动态查询中使用的参数,例如 请参考sp_executesql 否则,您可以将动态

  • 我想用某种通配符来表示“现在你可以自由地忽略额外的输入”... 以前的基于SimpleDateFormat的版本很好地处理了这一点... 这里有一个指向拉请求的链接:https://github.com/apache/james-mime4j/pull/44

  • 我有一个输入,当按“回车键”调用一个函数来重新加载列出的项目时,我需要。为此,我正在使用 当在loadItems调用中使用常量值时,这种方法效果很好,但只要我想传递输入值,就会出现一个错误: 这就是我得到的

  • 开头是我的jsp页面代码: 我想从

  • 例如,当我为num1输入2,为num2输入3时,我希望在输入第二个数字后立即获得8的输出。但是,程序希望我再输入一个整数,而我只输入一个随机数,如242,它仍然输出8,这意味着它不会影响结果。所以我的问题是为什么有第三个输入?感谢您的帮助!

  • 第一个数字:3第二个数字:4和:7