如何使用气流在本地将Hive Operator输出导出到csv文件中?

时间:2018-10-25 18:23:50

标签: hive hiveql airflow

我正在尝试将HiveOperator(Hive SQL)的输出导出到csv文件并将其存储在本地。想知道如何在气流中做到这一点。有人可以分享您对此的想法吗?

2 个答案:

答案 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=''
    )