Я действительно новичок, чтобы зажечь, поэтому мой вопрос может быть слишком наивным.
У меня есть список объектов, для которых мне нужно отдельно выполнить ряд запросов улья. Допустим, у меня есть следующее (для простоты я упустил детали настроек моего SparkSession.builder):
class Car(object):
def __init__(self, color, brand):
self._color = color
self._brand = brand
from pyspark.sql import SparkSession
spark = SparkSession.getOrCreate()
cars = [Car('col_'+str(i) , 'brand_'+str(i)) for i in range(100)] #list of objects to iterate on
results = []
for car in cars:
query1 = "select * from carcolors where car_color = {} order by dt limit 1".format(car._color)).first()
first_col = spark.sql(query1)
query2 = "select * from carbrands where car_brand = {} order by dt limit 1".format(car._brand)).first()
first_brand = spark.sql(query2)
results.append([first_col , first_brand])
Цикл for кажется мне действительно плохой идеей, потому что параллелизации вообще нет (то есть, кроме каждого запроса). Я видел это предложение: Как запустить независимые преобразования параллельно с использованием PySpark? , но, похоже, это не соответствует моему случаю, потому что я не знаю длины моего списка. Любые предложения о том, как сделать это более эффективно?