【发布时间】:2018-10-12 15:20:46
【问题描述】:
我在 java 中的代码正在使用结果集读取 teradata,并且正在打印终端中的每一行,但它没有正确写入 avro,即很少有行无缘无故丢失。没有发生行删除的模式,我在插入 avro 文件时将每种数据类型转换为字符串。我觉得我的 Avro 编写过程中有一个错误,但无法弄清楚。 任何帮助表示赞赏。 这是代码。
`
static avroWriter(Schema schema, OutputStream outStream, ResultSet rs) {
final GenericRecord rec = new GenericData.Record(schema)
final DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(schema)
final DataFileWriter<GenericRecord> dataFileWriter = new DataFileWriter<>(datumWriter)
dataFileWriter.create(schema, outStream)
final int nrOfColumns = rs.getMetaData().getColumnCount()
while (rs.next()) {
for (int i = 1; i <= nrOfColumns; i++) {
final Object colValue = rs.getObject(i)
String value
if(colValue == null){
value = "null"
}else{
value = colValue.toString()
}
//println("i :" + i + " value : "+ value)
rec.put(i - 1,value)
}
try {
dataFileWriter.append(rec)
println(rec)
}
catch (IOException e) {
log.error("Record :{} couldn't be read properly", rec, e)
}
}
}
`
【问题讨论】: