Как отобразить вывод данных из фрейма в искровом потоковом задании в виде запятой? - PullRequest
0 голосов
/ 23 октября 2019

Я работаю в Python, а не в Scala. Итак, мой текущий вывод, который представляет собой фрейм данных, выглядит следующим образом:

+--------+-----+
|     tag|count|
+--------+-----+
|Apple   | 1233|
+--------+-----+

Я просто хочу, чтобы это выглядело так, на stdout:

Apple, 1233

Это код запросакоторый возвращает это:

hashtags = allTags.select(explode(split(allTags['Hashtags'],",")).alias("tag")) 
hashTagCount = hashtags.groupBy("tag").count().orderBy(col("count").desc()).limit(1)
query = hashTagCount.writeStream.outputMode("complete").format("console").start()

Как мне перейти к достижению этого формата вывода. Спасибо.

1 Ответ

1 голос
/ 23 октября 2019

Только что попробовал использовать функцию str и распечатать вывод.

from pyspark.sql import Row
from pyspark.sql.functions import *
l = [('Ankit',25),('Jalfaizy',22),('Suresh',20),('Bala',26)]
rdd = sc.parallelize(l)
people = rdd.map(lambda x: Row(name=x[0], age=int(x[1])))
schemaPeople = spark.createDataFrame(people)

schemaPeople.show(10, False)

for row in schemaPeople.rdd.collect():
    text = str(row.name) + ", " + str(row.age)
    print(text)

output:

+---+--------+
|age|name    |
+---+--------+
|25 |Ankit   |
|22 |Jalfaizy|
|20 |Suresh  |
|26 |Bala    |
+---+--------+

Ankit, 25
Jalfaizy, 22
Suresh, 20
Bala, 26

Пожалуйста, дайте мне знать, если ваше требование отличается.

...