火花作业文件名
SparkJob file name
我正在使用 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"
知道为什么会这样吗?
INPUT__FILE__NAME
是 Hive 特定的虚拟列,Spark 不支持它。
Spark 提供了 input_file_name
功能,应该以类似的方式工作:
SELECT input_file_name() FROM df
但它需要 Spark 2.0 或更高版本才能与 PySpark 一起正常工作。
我正在使用 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"
知道为什么会这样吗?
INPUT__FILE__NAME
是 Hive 特定的虚拟列,Spark 不支持它。
Spark 提供了 input_file_name
功能,应该以类似的方式工作:
SELECT input_file_name() FROM df
但它需要 Spark 2.0 或更高版本才能与 PySpark 一起正常工作。