SparkJob文件名

时间:2016-11-15 21:10:50

标签: sql apache-spark pyspark hql hivecontext

我正在使用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"

为什么会出现这种情况?

1 个答案:

答案 0 :(得分:2)

input_file_name是一个特定于Hive的虚拟列,Spark不支持它。

Spark提供SELECT input_file_name() FROM df 函数,它应该以类似的方式工作:

toggle()

但它需要Spark 2.0或更高版本才能与PySpark一起正常工作。