我使用hiveserver2钩子从配置单元表中获取结果并加载到csv中。钩子 to_csv
函数有一个参数' output_headers
'. 如果设置为true,它将以 tablename.columnname
以及数据和写入csv文件。在csv头中,我只需要列名,并且需要从中去掉tablename tablename.columnname
. 我可以重写参数以获取列名吗?有没有其他方法可以使用 HiveServer2Hook
?
我已使用hiveserver2hook连接到配置单元。我也做了钩子 to_csv
功能。我只需要更改使用函数返回的列名的格式。这是钩子的链接。你可以找到 to_csv
, get_records
以及 get_results
作用于 HiveServer2Hook
.
https://airflow.apache.org/_modules/airflow/hooks/hive_hooks.html
我还尝试为hql运行“descripe tablename”和“show columns from tablename”,但是配置单元钩子 get_records
以及 get_results
由于“descripe”和“show columns”返回的结果不是预期的格式,函数在标题问题上中断。
尝试了以下操作:
1) describe tablename;
2) show columns from tablename;
气流挂钩具有以下功能 get_records
以及 get_results
. 当我使用上面的hql语句时,这两个语句都在下面一行中断。
header = next(results_iter)
有没有其他方法来获取列名,写信给 CSV
并使用 HiveServer2Hook
以及 Python
?
2条答案
按热度按时间hwamh0ep1#
使用
HiveMetastoreHook
的get_table(..)
函数来获取精确的列名,如下所示..
在此之后,您必须子类
Hiveserver2Hook
修改to_csv(..)
方法。特别是改变header
对客户的价值column_names
上面提取的就足够了。或者,如果您不希望子类
Hiveserver2Hook
,你可以实现它的to_csv(..)
分开(例如在hive_utils.py
文件)并实现相同的行为sgtfey8w2#
我遇到了同样的问题,下面是我发现的一个更简单的方法。
将下面的配置单元配置文件参数传递给
to_csv(..)
方法这将抑制列名之前的表名。