Быстрый способ подсчета записей всех таблиц в базе данных Hive - PullRequest
0 голосов
/ 23 сентября 2019

Попытка получить счет из всех таблиц в базе данных Hive.У меня есть решение, это эффективно?Есть ли лучшие способы сделать то же самое?

from pyspark.sql import functions as F
ds = 'dbname'
full_df = None
try:
    for row in spark.sql("show tables in %s" %ds).collect():
        py_df = (spark.table("%s.%s" % (ds,row.tableName))
                 .select(spark.table("%s.%s" % (ds,row.tableName)).columns[0]) 
                 .select
                 (
                F.lit(row.tableName).alias('table'),
                F.count('*').alias('num_records')
            )
                )
        if full_df is None:
            full_df = py_df
        else:
            full_df = full_df.unionAll(py_df)                                                                  

except Exception as e:
    print(str(e))  
full_df.orderBy(F.col('num_records').desc()).show(truncate =False)

enter image description here

Любые рекомендации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...