1

私は次のようなものを含む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"

なぜこれが考えられるのでしょうか?

4

1 に答える 1

6

INPUT__FILE__NAMEは Hive 固有の仮想列であり、Spark ではサポートされていません。

Spark はinput_file_name、同様の方法で機能する関数を提供します。

SELECT input_file_name() FROM df

ただし、PySpark で正しく動作するには Spark 2.0 以降が必要です。

于 2016-11-15T21:21:09.577 に答える