java使用者从avro模式中读取数据两次

pxy2qtax  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(409)

我有一个流应用程序,它监听一些数据,然后通过将数据推送到一个新的主题来转换数据。我使用avro模式将数据读写到主题中。问题是当我使用下面的命令使用来自最终目的地的数据时。然而,我的数据有点复杂,其中包含一些数组和json,我怀疑我的avro模式可能不适合我的目的。没有错误或任何东西,我可以看到我的最后一个主题的所有数据,但“宠物”字段由于某种原因被复制,我不明白为什么。事实上,我只向avro模式中的现有数据添加了一个新字段(job\ id),在转换它时不会对其进行大的更改。

  1. ./bin/kafka-console-consumer --topic my_topic \
  2. --bootstrap-server localhost:9092 \

这是我的json数据

  1. {
  2. "Person":{
  3. "id":"104440",
  4. "Name":"William",
  5. "LastName":"Dorsey",
  6. "archived":false,
  7. "Timezone":"America/Los_Angeles",
  8. "brandCompanyName":"Twitter",
  9. "brandID":"cf545a7b",
  10. "creatorID":"1234",
  11. "currency":"USD",
  12. "dateCreated":"2020-09-07T02:56:22Z",
  13. "dateModified":"2020-09-07T02:57:24Z",
  14. "disabled":false,
  15. "endDate":"2020-11-29T19:51:00-08:00",
  16. "startDate":"2020-08-31T20:55:00-07:00",
  17. "totalBudget":0
  18. },
  19. "Pets":[
  20. {
  21. "Name":"Pawny",
  22. "Id":"4214",
  23. "budget":"0",
  24. "adoptionDate":"2020-09-07T02:56:22Z",
  25. "year":"2",
  26. "type":"Golden",
  27. "gender":"male"
  28. }
  29. ],
  30. "CreationTime":"1604036638"
  31. }

我的avro架构

  1. {
  2. "name": "MyClass",
  3. "type": "record",
  4. "namespace": "com.acme.avro",
  5. "fields": [
  6. {
  7. "name": "Person",
  8. "type": {
  9. "name": "Person",
  10. "type": "record",
  11. "fields": [
  12. {
  13. "name": "id",
  14. "type": "string"
  15. },
  16. {
  17. "name": "Name",
  18. "type": "string"
  19. },
  20. {
  21. "name": "LastName",
  22. "type": "string"
  23. },
  24. {
  25. "name": "archived",
  26. "type": "boolean"
  27. },
  28. {
  29. "name": "Timezone",
  30. "type": "string"
  31. },
  32. {
  33. "name": "brandCompanyName",
  34. "type": "string"
  35. },
  36. {
  37. "name": "brandID",
  38. "type": "string"
  39. },
  40. {
  41. "name": "creatorID",
  42. "type": "string"
  43. },
  44. {
  45. "name": "currency",
  46. "type": "string"
  47. },
  48. {
  49. "name": "dateCreated",
  50. "type": "int",
  51. "logicalType": "date"
  52. },
  53. {
  54. "name": "dateModified",
  55. "type": "int",
  56. "logicalType": "date"
  57. },
  58. {
  59. "name": "disabled",
  60. "type": "boolean"
  61. },
  62. {
  63. "name": "endDate",
  64. "type": "int",
  65. "logicalType": "date"
  66. },
  67. {
  68. "name": "startDate",
  69. "type": "int",
  70. "logicalType": "date"
  71. },
  72. {
  73. "name": "totalBudget",
  74. "type": "int"
  75. }
  76. ]
  77. }
  78. },
  79. {
  80. "name": "Pets",
  81. "type": {
  82. "type": "array",
  83. "items": {
  84. "name": "Pets_record",
  85. "type": "record",
  86. "fields": [
  87. {
  88. "name": "Name",
  89. "type": "string"
  90. },
  91. {
  92. "name": "Id",
  93. "type": "string"
  94. },
  95. {
  96. "name": "budget",
  97. "type": "string"
  98. },
  99. {
  100. "name": "adoptionDate",
  101. "type": "int",
  102. "logicalType": "date"
  103. },
  104. {
  105. "name": "year",
  106. "type": "string"
  107. },
  108. {
  109. "name": "type",
  110. "type": "string"
  111. },
  112. {
  113. "name": "gender",
  114. "type": "string"
  115. }
  116. ]
  117. }
  118. }
  119. },
  120. {
  121. "name": "CreationTime",
  122. "type": "string"
  123. },
  124. {
  125. "name":"jobID",
  126. "type":"string"
  127. }
  128. ]
  129. }

当我使用主题-pets字段时,主题中的输出由于某种原因被复制了?我不明白为什么

  1. {
  2. "id":"104440",
  3. "Name":"William",
  4. "LastName:"Dorsey",
  5. "archived":false,
  6. "Timezone":"America/Los_Angeles",
  7. "brandCompanyName":"Twitter",
  8. "brandID":"cf545a7b",
  9. "creatorID":"1234",
  10. "currency":"USD",
  11. "dateCreated":"2020-09-07T02:56:22Z",
  12. "dateModified":"2020-09-07T02:57:24Z",
  13. "disabled":false,
  14. "endDate":"2020-11-29T19:51:00-08:00",
  15. "startDate":"2020-08-31T20:55:00-07:00",
  16. "totalBudget":0,
  17. "Pets":[
  18. {
  19. "Name":"Pawny",
  20. "Id":"4214",
  21. "budget":"0",
  22. "adoptionDate":2020-09-07T02:56:22Z",
  23. "year":"2",
  24. "type":"Golden",
  25. "gender":"male"
  26. }
  27. ],
  28. "CreationTime":1604036638,
  29. "jobID":12512,
  30. "pets":[
  31. {
  32. "Name":"Pawny",
  33. "Id":"4214",
  34. "budget":"0",
  35. "adoptionDate":2020-09-07T02:56:22Z",
  36. "year":"2",
  37. "type":"Golden",
  38. "gender":"male"
  39. }
  40. ]
  41. }
oxcyiej7

oxcyiej71#

因为我在字段名中使用了大写字母。。。在无休止的循环中徘徊了24个小时,如果有人遇到同样的问题,我终于能够找到答案。请阅读此处并使用小写名称作为字段名。当我把域名改成“宠物”的时候。复制品不见了

相关问题