2014-11-03 92 views
5

pierwszy stworzony ula tabeli zewnętrznej partycje za pomocą kodu i datyula zewnętrzny podzielono stół

CREATE EXTERNAL TABLE IF NOT EXISTS XYZ 
(
ID STRING, 
SAL BIGINT, 
NAME STRING, 

) 
PARTITIONED BY (CODE INT,DATE STRING) 
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe' 
STORED AS 
INPUTFORMAT "parquet.hive.DeprecatedParquetInputFormat" 
OUTPUTFORMAT "parquet.hive.DeprecatedParquetOutputFormat" 
LOCATION '/old_work/XYZ'; 

a następnie wykonam wkładka nadpisać na tym stole, biorąc dane z innej tabeli

INSERT OVERWRITE TABLE XYZ PARTITION (CODE,DATE) 
SELECT 
* 
FROM TEMP_XYZ; 

a potem ja policzyć liczbę rekordów w ulu wybierz liczbę (*) z XYZ; to pokazuje mi 1000 rekordy są tam a następnie zmienić nazwę lub przenieść lokalizację „/ old_work/XYZ” to „/ new_work/xyz”

a potem ponownie spaść stołu XYZ i utworzone ponownie wskazując lokalizację do nowego katalogu środki '/ new_work/XYZ'

CREATE EXTERNAL TABLE IF NOT EXISTS XYZ 
(
ID STRING, 
SAL BIGINT, 
NAME STRING, 

) 
PARTITIONED BY (CODE INT,DATE STRING) 
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe' 
STORED AS 
INPUTFORMAT "parquet.hive.DeprecatedParquetInputFormat" 
OUTPUTFORMAT "parquet.hive.DeprecatedParquetOutputFormat" 
LOCATION '/new_work/XYZ'; 

ale kiedy wykonać select count (*) z tabeli XYZ w ulu, to pokazuje 0 rekordów, Chyba coś przeoczyłem, proszę mi pomóc w tej sprawie ?? ??

Odpowiedz

5

Trzeba nie spadnie ze stołu i ponownie utworzyć go po raz drugi:

Jak najszybciej przenieść lub zmienić nazwę zewnętrznego HDFS lokalizację tabeli po prostu zrobić to:

msck repair table <table_name> 

W twoim przypadku błąd polegał na tym, że metastore ula nie zostało zaktualizowane nową ścieżką.

+0

Dlaczego jednak nie zaktualizowano? Patrzę na to i nie widzę żadnego powodu, dla którego to by nie działało ... – Avius