我想在流查询中将数据帧转换为字符串数组的数据集。尝试以下方法
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个字符串数组?
答案 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