批处理之后,Spark ETL我需要将包含多个不同列的结果数据帧写入Kafka主题。
根据以下Spark文档 https://spark.apache.org/docs/2.2.0/structured-streaming-kafka-integration.html 正在写入Kafka的数据帧在架构中应具有以下必填列:
值(必需)字符串或二进制
正如我前面提到的,我有更多的带有值的列,所以我有一个问题-如何从Spark应用程序将整个DataFrame行作为单个消息正确地发送到Kafka topic?我是否需要将所有列中的所有值连接到具有单个值列(将包含连接的值)的新DataFrame中,或者有更合适的方法来实现它?
文档中已经暗示了正确的方法,与您使用任何Kafka客户端所做的操作没有什么区别-您必须在发送到Kafka之前序列化有效负载。
你会怎么做( to_json , to_csv , Apache Avro
to_json
to_csv