Поскольку у вас есть только одно значение, я не понимаю, почему вы говорите:
Это не очень хорошая практика для secondFrame.take(1)[0]['upper_bound']
Я думаю более быстрое решение (и большее количество памяти), которое вы можете получить, если вы точно знаете значение,
df.withColumn("bound", psf.col("val")>=psf.lit(25))
или, если вы не хотите более общую версию,
df.withColumn("bound", psf.col("val")>=secondFrame.take(1)[0]['upper_bound'])
Если вы действительно не хотите использовать secondFrame.take(1)[0]['upper_bound']
, что является самым простым путем, вы можете сделать широковещательное соединение. Нечто подобное может сделать это:
df2 = rdd.toDF(['upper_bound']).withColumn('dummycol', psf.lit(1))
df = df.withColumn('dummycol', psf.lit(1))
df = (df.join(df2, ['dummycol'], how = "left_outer")
.withColumn("bound", psf.col("val") >= psf.col("upper_bound"))