Como obter a saída do console streaming streaming no Zeppelin?
Estou lutando para conseguir oconsole
pia trabalhando comStreaming estruturado do PySpark quando executado a partir de Zeppelin. Basicamente, não estou vendo nenhum resultado impresso na tela ou em nenhum arquivo de log encontrado.
Minha pergunta: Alguém tem um exemplo de como usar o PySpark Structured Streaming com um coletor que produz saída visível no Apache Zeppelin? Idealmente, ele também usaria a fonte de soquete, pois é fácil de testar.
Estou a usar:
Ubuntu 16.04spark-2.2.0-bin-hadoop2.7zeppelin-0.7.3-bin-allPython3Baseei meu código noexemplo estruturado_nome_de_de rede.py. Funciona quando executado a partir do shell PySpark (./bin/pyspark --master local[2]
); Eu vejo tabelas por lote.
%pyspark
# structured streaming
from pyspark.sql.functions import *
lines = spark\
.readStream\
.format('socket')\
.option('host', 'localhost')\
.option('port', 9999)\
.option('includeTimestamp', 'true')\
.load()
# Split the lines into words, retaining timestamps
# split() splits each line into an array, and explode() turns the array into multiple rows
words = lines.select(
explode(split(lines.value, ' ')).alias('word'),
lines.timestamp
)
# Group the data by window and word and compute the count of each group
windowedCounts = words.groupBy(
window(words.timestamp, '10 seconds', '1 seconds'),
words.word
).count().orderBy('window')
# Start running the query that prints the windowed word counts to the console
query = windowedCounts\
.writeStream\
.outputMode('complete')\
.format('console')\
.option('truncate', 'false')\
.start()
print("Starting...")
query.awaitTermination(20)
Eu esperaria ver impressões de resultados para cada lote, mas, em vez disso, apenas vejoStarting...
, e depoisFalse
, o valor de retorno dequery.awaitTermination(20)
.
Em um terminal separado, estou inserindo alguns dados em umnc -lk 9999
sessão do netcat enquanto o acima estiver em execução.