我正在尝试将HiveOperator(Hive SQL)的输出导出到csv文件并将其存储在本地。想知道如何在气流中做到这一点。有人可以分享您对此的想法吗?
答案 0 :(得分:0)
如果在PythonOperator
方法中使用HiveOperator
使用HiveServer2Hook
或子类execute
,则可能会找到所需的内容:
def execute(context):
...
self.hook = HiveServer2Hook(...)
self.conn = self.hook.get_conn()
self.conn.to_csv(hql=self.hql, csv_filepath=self.output_filepath, ...)
答案 1 :(得分:0)
您可以创建一个自定义的Hive运算符,它继承DAG中的HiveOperator
,如下所示:
class CustomHiveOp(HiveOperator):
def execute(context):
self.log.info('Executing: %s', self.hql)
self.hook = self.get_hook()
self.conn.to_csv(
hql=self.hql,
csv_filepath=self.output_filepath,
schema='default',
delimiter=',',
lineterminator='\r\n',
output_header=True,
fetch_size=1000,
hive_conf=None)
并将其用作:
hive_csv = CustomHiveOp(
task_id='hive_to_csv',
hql='YOUR_HIVE_QUERY',
hive_cli_conn_id=''
)