Jak využít stejnou jiskru zasedání v jiném modulu

0

Otázka

Musím běžet dva moduly ve Vzduchu s dvěma úkoly. Každý úkol má PySpark modul, který má několik zapalovací operace. Druhý modul se používá datový rámec vytvořený v předchozí relaci, a pokračuje ve své činnosti. Jak můžeme dosáhnout stejného se stejným SparkSession inicializuje? Snažil jsem se s getActiveSession(), ale to nefungovalo, protože úkol 1 úkol je dokončen, a proto, když úkol 2 je běh, nové zapalovací relace je vytvořen.

- [root@ ..dags]# cat tmp_spark_1.py

from pyspark.sql import SparkSession    
spark = SparkSession.builder.appName("PRJT").enableHiveSupport().getOrCreate()
df = spark.createDataFrame([(1, 2), (3, 4)], ['a', 'b'])
df.show()

- [root@ ..dags]# cat tmp_spark_2.py

from pyspark.sql import SparkSession
#spark = SparkSession.builder.appName("PRJT").enableHiveSupport().getActiveSession().getOrCreate()
spark = SparkSession.getActiveSession()
df1 = df.select(df['a'])
df1.show()
1

Nejlepší odpověď

0

To je nemožné v rámci dvou různých úkolů. Každý airlfow úloha spustí potenciálně v různých procesu a potenciálně na dfferent stroj, takže když budete provádět své úkoly, které musíte být vědomi toho, že jejich tratě jsou zcela izolovány od sebe navzájem a všechny připojení/relací, atd. byl otevřen v paměti tím, že jeden úkol bude proveden na druhý úkol.

Data mezi úkoly lze vyměnit pouze tím, XComs a ty jsou buď uložením do DB, nebo (při konfiguraci proudění Vzduchu s externí paměti) v externí paměti (jako S3/GCS). Nemáme žádné sdílení dat v paměti mezi úkoly.

To je velmi základní předpoklad proudění Vzduchu.

Pokud chcete znovu použít in-memory zdrojů mezi dvěma různými kroky, musíte udělat jeden krok v proudění Vzduchu v současné době.

Existují plány na otevření pro případy, jako je to v budoucnosti, ale to je docela daleko v budoucnosti, IMHO.

2021-11-23 11:47:40

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................