pyspark writeStream:每个数据帧行位于单独的json文件中

pyspark writeStream:每个数据帧行位于单独的json文件中,pyspark,spark-streaming,pyspark-dataframes,Pyspark,Spark Streaming,Pyspark Dataframes,我使用pyspark从卡夫卡主题中读取数据作为流数据帧,如下所示: spark = SparkSession.builder \ .appName("Spark Structured Streaming from Kafka") \ .getOrCreate() sdf = spark \ .readStream \ .format("kafka") \ .option("kafka.bootstrap.servers", "localhost:9092") \ .op

我使用pyspark从卡夫卡主题中读取数据作为流数据帧,如下所示:

spark = SparkSession.builder \
  .appName("Spark Structured Streaming from Kafka") \
  .getOrCreate()

sdf = spark \
  .readStream \
  .format("kafka") \
  .option("kafka.bootstrap.servers", "localhost:9092") \
  .option("subscribe", "test") \
  .option("startingOffsets", "latest") \
  .option("failOnDataLoss", "false") \
  .load() \
  .select(from_json(col("value").cast("string"), json_schema).alias("parsed_value"))

sdf_ = sdf.select("parsed_value.*")
我的目标是将每个
sdf\uu
行编写为单独的json文件。 以下代码:

writing_sink = sdf_.writeStream \
    .format("json") \
    .option("path", "/Desktop/...") \
    .option("checkpointLocation", "/Desktop/...") \
    .start()

writing_sink.awaitTermination()
将在同一个json中写入数行数据帧,具体取决于微批处理的大小(或者至少这是我的假设)。 我需要的是调整上述内容,以便将数据帧的每一行写入一个单独的json文件中

我也尝试过使用
partitionBy('column')
,但这仍然不能完全满足我的需要,而是创建了一个文件夹,其中json文件可能仍然有多行写入其中(如果它们具有相同的id)


有什么想法能帮上忙吗?提前感谢。

发现以下选项起到了作用:

   .option("maxRecordsPerFile", 1)

对不起,我有点糊涂了!为什么每行需要一个文件?这一开始毫无意义。对不起,我弄糊涂了@安德烈·卡内罗:好的,听起来不错。但我为什么不想要呢?你可以做任何你想做的事,当然!但是,通常情况下,类似的数据会在一个文件中以多行的形式组织起来(例如,除非您需要按大小对其进行拆分)。但是,因为我不知道你的数据是如何组织的,所以我很好奇。