无法在 Data Proc Hive Operator 中使用文件进行查询
Unable to query using file in Data Proc Hive Operator
我无法查询 DataProcHiveOperator
中的 .sql 文件。
尽管文档告诉我们可以使用文件进行查询。 Link 文档 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
问题是因为你也通过了query='gs://us-central1-bucket/data/sample_hql.sql'
。
您应该恰好通过 query
或 queri_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)
我无法查询 DataProcHiveOperator
中的 .sql 文件。
尽管文档告诉我们可以使用文件进行查询。 Link 文档 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
问题是因为你也通过了query='gs://us-central1-bucket/data/sample_hql.sql'
。
您应该恰好通过 query
或 queri_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)