Dataproc hive操作符未运行存储在存储桶中的hql文件

时间:2017-09-20 07:01:49

标签: python hive airflow google-cloud-dataproc apache-airflow

我正在尝试使用airflow脚本运行存储在云存储中的hql文件,我们可以通过这两个参数将路径传递给DataprocHiveOperator:

  1. 查询:' gs://bucketpath/filename.q'
  2. Error occuring - cannot recognize input near 'gs' ':' '/'

    1. query_uri:' gs://bucketpath/filename.q'
    2. Error occuring: PendingDeprecationWarning: Invalid arguments were passed to DataProcHiveOperator. Support for passing such arguments will be dropped in Airflow 2.0. Invalid arguments were: *args: () **kwargs: {'query_uri': 'gs://poonamp_pcloud/hive_file1.q'

      使用Query param,我已成功运行配置单元查询(select * from table

      有没有办法通过dataprochiveoperator运行存储在云存储桶中的hql文件?

2 个答案:

答案 0 :(得分:3)

那是因为您同时使用了 query query_uri

如果您要使用文件查询,则必须使用 query_uri query = None ,否则您可以忽略编写查询。

如果您使用的是 inline query ,则必须使用 query

以下是通过文件查询的示例。

HiveInsertingTable = DataProcHiveOperator(task_id='HiveInsertingTable',
    gcp_conn_id='google_cloud_default', 
    queri_ury="gs://us-central1-bucket/data/sample_hql.sql",
    cluster_name='cluster-name',
    region='us-central1',
    dag=dag)

答案 1 :(得分:1)

query_uri确实是从云存储运行hql文件的正确参数。但是,它仅添加到https://github.com/apache/incubator-airflow/pull/2402中的DataProcHiveOperator。根据您收到的警告消息,我不认为您正在运行支持该参数的代码。更改不在最新版本(1.8.2)上,因此您需要等待另一个版本或从主分支中取出。