我有4个需要填充的独立BigQuery表。我创建了一个抽象类BaseBQTable,其他表也进行了扩展。
在Beam管道中,我将抽象类作为输入,在DynamicDestinations中,我尝试使用其方法从Child类中生成真实的模式(目的地)。
代码如下:
BQTableMessages.apply("Push to Bigquery", BigQueryIO.write()
.to(new DynamicDestinations<BaseBQTable, BaseBQTable>() {
public BaseBQTable getDestination(ValueInSingleWindow<BaseBQTable> element) {
return element.getValue();
}
public TableDestination getTable(BaseBQTable tableObj) {
String s = tableObj.toString();
TableDestination mydestination = tableObj.getTableDestination();
// Maybe it doesn't like using the method above because it itself is an abstract class
return mydestination;
}
public TableSchema getSchema(BaseBQTable tableObj) {
return null;
}
})
如果我在使用方法getTableDestination
的行中注释掉,或替换为return null
,则intelliJ不会抱怨。
但是,由于这个原因,我得到了这个模糊的错误;
无法解析方法 '到(匿名org.apache.DynamicDestinations,bqpackage.BaseBQTable,bqpackage.BaseBQTable>'
我有种感觉,它不喜欢输入元素是一个抽象类,但我对Java还是比较陌生。
任何建议都将不胜感激! 谢谢