环境
pyspark 2.1.0 python 3.5.2
##问题
我有一个具有多个条件的联接:
join_cond = [
(col("ltmr1.anc_ref") == col("global.anc_ref") &
col("global.straight_distance") >= args.radius_1 &
col("global.straight_distance") <= args.radius_2)
]
这将在以后使用:
ltm_r1_in_r2 = data_with_straight_distance.alias("global") \
.join(
less_than_min_r1.select(
col("anc_ref"),
col("num_rep")
).alias("ltmr1"),
join_cond,
"leftsemi"
)
程序在以下行失败:
col("global.straight_distance") >= args.radius_1 &
哪里 args
元组是从 argparse
.
相关跟踪:
File "/mnt/mesos/sandbox/full_load.py", line 114, in full_load
col("global.straight_distance") >= args.radius_1 &
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/sql/column.py", line 635, in __nonzero__
ValueError: Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.
为什么spark没有意识到我的情况,我应该如何纠正?
2条答案
按热度按时间7ivaypg91#
尝试将每个条件语句放在括号内
q5lcpyga2#
以下为预期输出: