2014-10-03 9 views
26

Wiem, że można uzyskać nazwy kolumn z tabeli za pomocą następującej sztuczki w ulu:Po prostu nazwy kolumn z ula tabeli

hive> set hive.cli.print.header=true; 
hive> select * from tablename; 

Jest to również możliwe tylko uzyskać nazwy kolumn z tabeli ?

Nie lubię zmieniać ustawienia czegoś, czego potrzebuję tylko raz.

Moje obecne rozwiązanie jest następujące:

hive> set hive.cli.print.header=true; 
hive> select * from tablename; 
hive> set hive.cli.print.header=false; 

To wydaje się zbyt rozwlekły i przeciw sucho zasady.

+1

Masz na myśli, że musisz uzyskać nazwy kolumn wraz z danymi wyjściowymi select *? –

+1

dlaczego nie opisać tabeli? – Amar

+0

doh! nie znalazłem tego w dokumentach. opisuje to tabela. – cantdutchthis

Odpowiedz

34

Jeśli po prostu chcą zobaczyć nazwy kolumn ten wiersz powinien on zapewnić bez zmiany ustawień:

describe database.tablename; 

Jednakże, jeśli to nie zadziała dla danej wersji ula kod ten będzie dostarczać, ale domyślna baza danych będzie teraz baza danych używasz:

use database; 
describe tablename; 
+0

Mam jedno pytanie: opiszę wszystkie partycje, powodując HiveMetastore OOM? Napotkałem OOM podczas wykonywania opisu tablename w moim przypadku. –

32

można również zrobić show columns in $table lub zobaczyć Hive, how do I retrieve all the database's tables columns za dostęp do ula Metadane

+3

To powinna być zaakceptowana odpowiedź na pytanie "czy można ** po prostu uzyskać nazwy kolumn", ponieważ "opis" zawiera dodatkowe informacje. –

0

użyj desc tablename z Hive CLI lub beeline, aby uzyskać wszystkie nazwy kolumn. Jeśli chcesz mieć nazwy kolumn w pliku, uruchom poniższe polecenie z powłoki.

$ hive -e 'desc dbname.tablename;' > ~/columnnames.txt 

gdzie dbname to nazwa bazy danych gałąź, gdzie tabela jest zamieszkałej można znaleźć columnnames.txt plik w katalogu głównym.

$cd ~ 
$ls