我正在使用以下参数将一个包含 30000 个条目的 Dataframe 写入 kafka
pc.amat2<-addBgKnowledge(pag2cpdag(fci.fit),x=1,y=2)
class(pc.amat2)<-"matrix"
plot(as(t(pc.amat2),"graphNEL"))
我不明白 Spark 如何对 Dataframe 进行分区,我收到错误
.format("kafka")
.option("kafka.bootstrap.servers", kafka_brokers)
.option("kafka.compression.type","lz4")
.option("kafka.max.request.size", 1048576)
.option("kafka.message.max.bytes", 750000)
.option("kafka.max.request.size",750000)
.option("kafka.max.partition.fetch.bytes",750000)
.option("kafka.batch.size", 100)
.option("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")
.option("value.serializer", "org.apache.kafka.common.serialization.JsonSerializer")
.option("topic", product_kafka_topic)
.option("partition",15)
我该如何解决?
答案 0 :(得分:1)
序列化时消息为10540452字节,大于750000
您已明确限制消息大小
.option("kafka.message.max.bytes", 750000)
<块引用>
我不明白 Spark 如何对 Dataframe 进行分区
它需要您的 key, value
列以及可选的 timestamp
和 partition
列,然后将每一行打包到 Kafka 记录中,这些记录在请求批次中生成。
.option("kafka.max.request.size", 1048576)
.option("kafka.max.request.size", 750000)
鉴于您用第二个值重复了该选项,这就是将在配置中使用的值
一个请求中可以有多个消息,但该值是字节,而不是记录数。
.option("kafka.batch.size", 100)
这不是单独在 Spark 中可以解决的问题;代理也会拒绝大消息 -- 请参阅此处的解决方案 How can I send large messages with Kafka (over 15MB)?
旁白:结构化流不使用 key.serializer
或 value.serializer
或 partition
作为配置选项