gpt4 book ai didi

python - 使用Impala选择带有通配符模式的多个表并将其连接

转载 作者:行者123 更新时间:2023-12-02 18:49:07 26 4
gpt4 key购买 nike

我从Impala SQLHadoop开始,有一个(可能很简单)的问题。
我有一个Hadoop数据库,其中包含具有相同模式和命名约定(例如process_1,process_2,process_3等)的表的数百个表。我将如何查询所有表并将它们连接到一个大表或数据框中?是否可以仅使用Impala SQL来执行此操作,该SQL在python中返回一个数据帧?
就像是:

SELECT * FROM 'process_*'; 
还是我需要运行 SHOW TABLES 'process_*',在python中使用循环并分别查询每个表?

最佳答案

如果您只是在查看Impala解决方案,那么一种方法是在所有表的顶部创建一个 View 。如下所示:

create view process_view_all_tables as
select * from process1
union all
select * from process2
union all
...
select * from processN;
这种方法的 缺点如下:
  • 您需要将多个表合并在一起。就内存利用而言,联合是一项昂贵的操作。如果您的表数量较少(例如2-5个表),则可以正常工作。
  • 您需要手动添加所有表。如果将来要使用新的过程表,则需要更改 View ,然后添加新表。这是维护的头疼。
  • 该 View 假定所有PROCESS表都具有相同的架构。

  • 如您所说,在 第二种方法中,您可以使用 SHOW TABLES LIKE 'process*'从Impala查询表列表,并编写一个小程序来遍历表列表并创建文件。
    生成文件后,可以将文件移植回HDFS并在其上面创建一个表。
    第二种方法的唯一缺点是,每次迭代都会导致数据库请求黑斑,这在 Multi-Tenancy 数据库环境中尤其不利。
    我认为,您应该尝试第二种方法。
    希望这可以帮助 :)

    关于python - 使用Impala选择带有通配符模式的多个表并将其连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62592714/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com