我正在使用HQL查询,其中包含与...类似的内容。
INSERT OVERWRITE TABLE ex_tb.ex_orc_tb
select *, SUBSTR(INPUT__FILE__NAME,60,4), CONCAT_WS('-', SUBSTR(INPUT__FILE__NAME,71,4), SUBSTR(INPUT__FILE__NAME,75,2), SUBSTR(INPUT__FILE__NAME,77,2))
from ex_db.ex_ext_tb
当我进入蜂巢时,我使用该命令,它可以正常工作。
当我把它放入pyspark,hivecontext命令时,我得到错误......
pyspark.sql.utils.AnalysisException: u"cannot resolve 'INPUT__FILE__NAME' given input columns: [list_name, name, day, link_params, id, template]; line 2 pos 17"
为什么会出现这种情况?
答案 0 :(得分:2)
input_file_name
是一个特定于Hive的虚拟列,Spark不支持它。
Spark提供SELECT input_file_name() FROM df
函数,它应该以类似的方式工作:
toggle()
但它需要Spark 2.0或更高版本才能与PySpark一起正常工作。