如何将流数据集[String]转换为数据集[Array [String]]?

时间:2019-11-18 06:04:00

标签: scala apache-spark apache-spark-sql

我想在流查询中将数据帧转换为字符串数组的数据集。尝试以下方法

           DF
            .toJSON
            .write
            .format("org.apache.spark.sql.kafka010.KafkaSourceProvider")
            .option("kafka.bootstrap.servers", "brokers")
            .option("topic", "topicname")
            .save()

当前输出为

{'col1':valuex , 'col2':'value2'}
{'col1':valuey , 'col2':'value3'}
{'col1':valuez , 'col2':'value4'}
{'col1':value1 , 'col2':'value5'}

所需的输出是

[{'col1':valuex , 'col2':'value2'},{'col1':valuey , 'col2':'value3'},{'col1':valuez , 'col2':'value4'},{'col1':value1 , 'col2':'value5'}]

我想减少数据框的大小,比如说我在dataset [string]中有5个字符串行,因此应该将其减少为1个单计数,它将包含5个字符串数组?

1 个答案:

答案 0 :(得分:1)

以下代码似乎可以正常工作。

         DF
          .toJSON
          .withColumn("timestamp", lit(System.currentTimeMillis()))
          .groupBy("timestamp").agg(collect_list('value) as 'value)
          .toJSON
          .write
          .format("kafka")
          .option("kafka.bootstrap.servers", "...")
          .option("topic", "...")
          .save