无法将变量传递给 pyspark 中的 spark sql 查询
Posted
技术标签:
【中文标题】无法将变量传递给 pyspark 中的 spark sql 查询【英文标题】:Cannot pass variables to a spark sql query in pyspark 【发布时间】:2018-01-03 18:48:03 【问题描述】:我有一个日期数据类型的 python 变量(我正在使用 pyspark): 变量值为2016-10-31
print type(load_dt)
>> <type 'datetime.date'>
我很难将它传递给 sparksql 查询:
hive_context.sql("select * from tbl t1 where cast (substring(t1.dt,1,10) as date) =0".format(load_dt));
Error:
u"cannot resolve '(cast(substring(dt,1,10) as date) = ((2016 - 10) - 31))' due to data type mismatch: differing types in '(cast(substring(period_dt,1,10) as date) = ((2016 - 10) - 31))'
(date and int)
【问题讨论】:
【参考方案1】:添加引号:
"select * from tbl t1 where cast (substring(t1.dt,1,10) as date) = '0'"
否则日期将转换为2016-10-31
字符串并解释为算术表达式:
2016 - 10 - 31
【讨论】:
以上是关于无法将变量传递给 pyspark 中的 spark sql 查询的主要内容,如果未能解决你的问题,请参考以下文章
Pyspark 和使用 UDF:如何将 Python 参数(sys.argv、argparse)传递给 Python Worker?
安装 Spark 问题。无法使用 pyspark 打开 IPython Notebook