我已经将postgres wallog流式传输到kafka,每个表都有一个主题。主题架构如下(嵌套数据键与每个主题不同):
topic1: { tablename, data{id,name,age,created_at} }
topic2: { tablename, data{id,school,address,created_at} }
现在,我想使用spark将它们保存到其他hdfs文件(表名作为文件名)。
使用多输入流方式很容易。但是我发现我必须将并发作业的数量设置为主题数,否则它将无法正常工作。但是我有大约一百个主题。有问题吗?
我还尝试了以下一种输入流方法
stream.foreachRDD(rdd => {
rdd.foreachPartition(partition => {
val ds = partition.toList.toDS
val df = spark.read.json(ds)
df.write.mode("append").parquet("the_file_path")
})
})
但是我这样遇到了很多问题。有人可以在这里提出几点意见吗?
对使用一个流还是多个流有任何想法吗?