Как проверить, если RDD пуст с помощью потоковой передачи искры?

Если вы хотите нарисовать и не замораживать свою нить при увеличении количества точек, вы должны использовать plt.pause () not time.sleep ()

im, используя следующий код, чтобы построить серию координат xy .

import matplotlib.pyplot as plt 
import math


pi = 3.14159

fig, ax = plt.subplots()

x = []
y = []

def PointsInCircum(r,n=20):
    circle = [(math.cos(2*pi/n*x)*r,math.sin(2*pi/n*x)*r) for x in xrange(0,n+1)]
    return circle

circle_list = PointsInCircum(3, 50)

for t in range(len(circle_list)):
    if t == 0:
        points, = ax.plot(x, y, marker='o', linestyle='--')
        ax.set_xlim(-4, 4) 
        ax.set_ylim(-4, 4) 
    else:
        x_coord, y_coord = circle_list.pop()
        x.append(x_coord)
        y.append(y_coord)
        points.set_data(x, y)
    plt.pause(0.01)
0
задан Jacek Laskowski 28 February 2019 в 17:39
поделиться

1 ответ

Правильная структура будет

import uuid 

def process_batch(rdd):
    if not rdd.isEmpty():
        result.saveAsTextFiles("/Users/rocket/Downloads/output-{}".format(
          str(uuid.uuid4())
        ) ,"txt")


result.foreachRDD(process_batch)

. Однако, как вы видите выше, для каждой партии требуется отдельный каталог, так как RDD API не имеет режима append.

И альтернативой может быть:

def process_batch(rdd):
    if not rdd.isEmpty():
       lines = rdd.map(str)
       spark.createDataFrame(lines, "string").save.mode("append").format("text").save("/Users/rocket/Downloads/output")
0
ответ дан user11124576 28 February 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: