2016-11-15 2 views
0

Я использую HQL запрос, который содержит что-то подобное ...SparkJob имя файла

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" 

Любые идеи, почему это может быть?

ответ

2

INPUT__FILE__NAME - это виртуальный столбец Hive, который не поддерживается в Spark.

Спарк обеспечивает input_file_name функцию, которая должна работать аналогичным образом:

SELECT input_file_name() FROM df 

но требует Спарк 2.0 или более поздняя версия для корректной работы с PySpark.

Смежные вопросы