Мой код работает нормально, когда я запускаю искру локально. Но когда я запускаю Spark в кластере, я получаю следующую ошибку:
ERROR:root:Exception while sending command.
Traceback (most recent call last):
File "/opt/apache-spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1159, in send_command
raise Py4JNetworkError("Answer from Java side is empty")
py4j.protocol.Py4JNetworkError: Answer from Java side is empty
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/apache-spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 985, in send_command
response = connection.send_command(command)
File "/opt/apache-spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1164, in send_command
"Error while receiving", e, proto.ERROR_ON_RECEIVE)
py4j.protocol.Py4JNetworkError: Error while receiving
---------------------------------------------------------------------------
Py4JError Traceback (most recent call last)
<ipython-input-3-683c6d57f477> in <module>
----> 1 raw_data = spark.read.format('csv').option('header','true').option('inferSchema', 'true').load('training_mod.csv')
2 raw_data.columns
/opt/apache-spark/python/pyspark/sql/readwriter.py in load(self, path, format, schema, **options)
164 self.options(**options)
165 if isinstance(path, basestring):
--> 166 return self._df(self._jreader.load(path))
167 elif path is not None:
168 if type(path) != list:
/opt/apache-spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py in __call__(self, *args)
1255 answer = self.gateway_client.send_command(command)
1256 return_value = get_return_value(
-> 1257 answer, self.gateway_client, self.target_id, self.name)
1258
1259 for temp_arg in temp_args:
/opt/apache-spark/python/pyspark/sql/utils.py in deco(*a, **kw)
61 def deco(*a, **kw):
62 try:
---> 63 return f(*a, **kw)
64 except py4j.protocol.Py4JJavaError as e:
65 s = e.java_exception.toString()
/opt/apache-spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py in get_return_value(answer, gateway_client, target_id, name)
334 raise Py4JError(
335 "An error occurred while calling {0}{1}{2}".
--> 336 format(target_id, ".", name))
337 else:
338 type = answer[1]
Py4JError: An error occurred while calling o52.load
Я чувствую, что проблема заключается в конфигурации Spark. Конфигурация выглядит следующим образом:
spark.master spark://192.168.56.200:7077
spark.executor.memory 1g
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.cores 2
spark.driver.memory 3g
spark.executor.cores 1
spark.cores.max 3
spark.dynamicAllocation.enabled false
spark.shuffle.service.enabled false
spark.app.name Logistic Regression
Информация о кластере:
У меня есть три рабочих узла (я также добавил master как рабочий). Два работника имеют 2 ГБ памяти, а мастер имеет 1 ГБ памяти.
Что-то не так с моей конфигурацией или я должен искать в другом месте?