2014-02-20 6 views
4

Как я могу получить количество строк из всех таблиц с помощью улья. Я заинтересован в имени базы данных, имя таблицы и количество строкПолучить количество строк из всех таблиц в улье

+0

Проверьте это [ссылка] (https://stackoverflow.com/a/45304801/7043815) надеюсь, что это помогает !! –

ответ

0

select count(*) from table

Я думаю, нет более эффективный способ.

+0

Как это можно автоматизировать для всех таблиц в базе данных. Меня действительно интересует функция, аналогичная функции information_schema.tables, такой как функция в улье, которая забирает количество записей во всех таблицах в базе данных с использованием HQL. Любые мысли – raunakjhawar

+0

Нет такой функции. – pensz

+0

Любая такая функция в дерби. Каково имя базы данных метастора по умолчанию? – raunakjhawar

15

Вам нужно будет сделать

select count(*) from table 

для всех таблиц.

Чтобы автоматизировать это, вы можете создать небольшой скрипт bash и некоторые команды bash. Первый запуск

$hive -e 'show tables' | tee tables.txt 

Хранит все таблицы в базе данных в текстовом файле tables.txt

Создать Баш файл (count_tables.sh) со следующим содержимым.

while read line 
do 
echo "$line " 
eval "hive -e 'select count(*) from $line'" 
done 

Теперь выполняйте следующие команды.

$chmod +x count_tables.sh 
$./count_tables.sh <tables.txt> counts.txt 

Это создает текстовый файл (counts.txt) с графами всех таблиц в базе данных

+0

, когда я запускаю это после таблицы «INSERT INTO TABLE SELECT row FROM another_table» Я получаю только количество добавленных строк, а не общее количество строк в таблице, как вы можете всегда получать общее количество строк? – MoustafaAAtta

+0

@ Mukul выход + ----- Таблица ----- + .... с линиями, начинающимися и заканчивающимися | , Любой способ захватить только имя таблицы? –

0

Вы также можете установить базу данных в одной команде и отдельно с ;.

hive -e 'use myDatabase;show tables' 
2

Более быстрый способ приблизительного подсчета всех строк в таблице - запустить объяснение в таблице. В одном из объясняющих положений, она показывает число строк, как показано ниже:

TableScan [TS_0] (rows=224910 width=78)

Преимущество заключается в том, что вы на самом деле не тратить ресурсы кластера, чтобы получить эту информацию.

Смежные вопросы