Как я могу экспортировать вывод Hive Operator в файл csv локально, используя airflow? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь экспортировать вывод HiveOperator (Hive SQL) в файл csv и сохранить его локально.Хотите знать, как я могу сделать это в потоке воздуха.Кто-нибудь может поделиться своими мыслями по этому поводу?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы можете создать собственный оператор Hive, который наследует HiveOperator в вашей DAG, как показано ниже:

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=''
    )
0 голосов
/ 26 октября 2018

Вы можете найти то, что вам нужно, если вы используете 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, ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...