Kafka connect spooldir动态模式生成器

时间:2020-05-12 22:37:46

标签: apache-kafka avro apache-kafka-connect

这与CSV的kafka-connect-spooldir连接器有关。我想知道是否有一种方法可以避免对模式进行硬编码并让连接器动态创建模式?我有很多要处理的csv文件,说每天几百GB,有时需要几兆字节的csv。有时某些csv文件具有新的列,而有些则被删除。

我能够成功读取csv并写入弹性搜索,并且关注您的帖子。https://www.confluent.io/blog/ksql-in-action-enriching-csv-events-with-data-from-rdbms-into-AWS/ 所以现在我不想使用值模式和键模式。

通过链接https://docs.confluent.io/current/connect/kafka-connect-spooldir/connectors/csv_source_connector.html;我认为可以将schema.generation.enabled设置为true。

这是我的REST API调用[包括我的连接器配置]

$curl -i -X POST -H "Accept:application/json" -H  "Content-Type:application/json" http://xxx:000/connectors/ -d '{
"name":"csv1",
"config":{
"tasks.max":"1",
"connector.class":"com.github.jcustenborder.kafka.connect.spooldir.SpoolDirCsvSourceConnector",
"input.file.pattern":"^.*csv$",
"halt.on.error":"false",
"topic":"order",
"schema.generation.enabled":"true",
"schema.generation.key.name":"orderschema",
"schema.generation.value.name":"orderdata",
"csv.first.row.as.header":"true",
"csv.null.field.indicator":"EMPTY_SEPARATORS",
"batch.size" : "5000",
   }
}
'

提交此文件时,出现以下错误。 { “ name”:“ order”, “连接器”:{ “ state”:“ FAILED”, “ worker_id”:“ localhost:000”, “ trace”:“ org.apache.kafka.connect.errors.DataException:为输入模式找到了多个模式。\ nSchema: {\” name \“:\” com.github .jcustenborder.kafka.connect.model.Value \“,\” type \“:\” STRUCT \“,\” isOptional \“:false,\” fieldSchemas \“:

对此有什么解决方案?

1 个答案:

答案 0 :(得分:0)

我现在能够解析所有数据。技巧是先处理一个文件[任意],然后检查随机添加另一个文件。看起来就像这样,它可以自动更新架构。 (例如Robin Moffatt的称呼) 之后,将所有文件添加到该文件夹​​,即可正常运行。是的!