无法在Data Proc Hive Operator中使用文件查询

时间:2018-11-22 04:51:50

标签: hive google-cloud-platform airflow google-cloud-dataproc

我无法使用DataProcHiveOperator中的.sql文件进行查询。 尽管文档告诉我们可以使用文件进行查询。文档Here的链接

直接查询时效果很好 这是我的示例代码,可以直接编写查询:

HiveInsertingTable = DataProcHiveOperator(task_id='HiveInsertingTable',
gcp_conn_id='google_cloud_default', 
query='CREATE TABLE TABLE_NAME(NAME STRING);',
cluster_name='cluster-name',
region='us-central1',
dag=dag)

查询文件:

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

sample_hql.sql脚本没有错误。
它正在读取文件位置作为查询,并向我抛出错误:

Query: 'gs://bucketpath/filename.q'
Error occuring - cannot recognize input near 'gs' ':' '/'

也提出了类似的问题Here

1 个答案:

答案 0 :(得分:1)

问题是因为您还通过了query='gs://us-central1-bucket/data/sample_hql.sql'

您应准确传递queryqueri_uri中的1个。

您问题中的代码具有两者,因此请删除query或使用以下代码:

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