添加配置参数-spark&Kafka:ack和压缩

时间:2019-06-21 09:40:38

标签: scala apache-spark apache-kafka

我想在我的应用程序spark&Kafka中添加一些参数,以将Dataframe写入主题kafka。

我在spark-kafka文档中找不到acks和compression.codec

   .write
   .format("kafka")
   .option("kafka.sasl.mechanism", Config.KAFKA_SASL_MECHANISM)
   .option("kafka.security.protocol", Config.KAFKA_SECURITY_PROTOCOL)
   .option("kafka.sasl.jaas.config", KAFKA_JAAS_CONFIG)
   .option("kafka.bootstrap.servers", KAFKA_BOOTSTRAP)
   .option("fetchOffset.numRetries", 6)
   .option("acks","all")
   .option("compression.codec","lz4")
   .option("kafka.request.timeout.ms", 120000)
   .option("topic", topic)
   .save()```

2 个答案:

答案 0 :(得分:0)

您可以使用此特定属性定义序列化器: default.value.serde

答案 1 :(得分:0)

对于序列化程序,请创建一个case类或其他类型的一到三列Dataframe,它们仅包含Array[Byte]key的{​​{1}}字段(字符串也可以使用)。然后value字符串字段。如果只需要Kafka值,则只需要一列Dataframe

在写入Kafka之前,您需要映射当前数据以将其全部序列化。

然后,文档确实说任何其他生产者属性都以topic开头

更多信息,请点击https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html#writing-data-to-kafka

对于SASL属性,我认为您需要在提交过程中使用kafka.并通过spark.executor.options传递密钥标签或jaas文件,尽管