python - 为什么 spark 无法识别我的“数据框布尔表达式”?
问题描述
环境
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 无法识别我的状况,我应该如何纠正?
解决方案
尝试将每个条件语句放在括号内
join_cond = [
((col("ltmr1.anc_ref") == col("global.anc_ref")) &
(col("global.straight_distance") >= args.radius_1) &
(col("global.straight_distance") <= args.radius_2))
]
推荐阅读
- javascript - 我无法向邮箱发送电子邮件
- ssis - RetainSameConnection 的设置存储在哪里?
- opencart - 如何从 opencart 2.3 中的系统购物车库访问位于目录中的自定义模型
- regex - 如何在splunk中使用正则表达式从多个句子中提取一个句子
- react-admin - TabbedShowLayout - 如何获取当前选定的选项卡?
- c++ - strlen() 不能很好地处理特殊字符
- unix - 从控制台输出格式化 SSL 证书?
- java - 如何在 mapReduce Hadoop 框架中对值(及其对应的键)进行排序?
- servicestack - 调试 ServiceStack 的 react-lite 和 vue-lite
- html - 我的表头样式有什么问题?