На стороне сервера я настроил простой tcp-сервер, например:
import socket
from time import sleep
host = 'localhost'
port = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
print('\nListening for a client at',host , port)
conn, addr = s.accept()
print('\nConnected by', addr)
try:
while True:
with open('FireData-Part2.csv') as f:
header = next(f) # read from second line in csv file
for line in f:
out = "linesdaadsa".encode('utf-8') # !!!IT DOES NOT WORK HERE !!
#out = line.encode('utf-8') # !!IT WORKS HERE !!!!!!!
self.conn.send(out)
print('Sending line',line)
sleep(0.2) # ensure every 1 second 5 of firedata is generated
print('End Of Stream fire.')
except socket.error:
print ('Error Occured.\n\nClient disconnected.\n')
на стороне клиента. Я написал что-то простое:
import sys
import pymongo
from pymongo import MongoClient
from pprint import pprint
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
sc = SparkContext.getOrCreate()
if (sc is None):
sc = SparkContext(appName="MongoDBApp")
ssc = StreamingContext(sc, 5)
host = "localhost"
port = 12345
lines = ssc.socketTextStream(host, int(port))
lines.pprint()
ssc.start()
try:
#deliberately cancel the execution after one minute
ssc.awaitTermination(timeout=60)
except KeyboardInterrupt:
ssc.stop()
sc.stop()
ssc.stop()
sc.stop()
, однако ничего не будетраспечатай, я понимаю, что я пытаюсь отправить простую строку, такую как 'line', клиенту.и если я закодирую строку, она распечатается!Это слишком странно для меня, потому что они оба имеют одинаковую строку типа, почему нельзя просто закодировать строку и отправить ее клиенту ??