Witaj! W tym krótkim samouczku pokażę Ci, w jaki sposób można konwertować dane w Hive z jednego formatu na inny bez wykorzystania dodatkowej aplikacji.
Wskazówka: Po prostu skopiuj dane między tabelami Hive
Zajmijmy się następującym scenariuszem:
- Masz dane w formacie CSV w tabeli “data_in_csv”
- Chciałbyś mieć te same dane, ale w formacie ORC w tabeli “data_in_parquet”
Krok #1 – Utwórz kopię tabeli, ale w docelowym formacie
Masz tabelę w formacie CSV, jak poniżej:
CREATE TABLE data_in_csv ( id Int, name String, age Int ) PARTITIONED BY (INGESTION_ID BIGINT) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = ',', "quoteChar" = '"', "escapeChar" = '\' ) STORED AS TEXTFILE;
Zmieniamy format tabeli:
CREATE TABLE data_in_orc ( id int, name string, age int ) PARTITIONED BY (INGESTION_ID BIGINT) STORED AS ORC tblproperties ("orc.compress"="SNAPPY");
Krok #2 – Skopiuj dane między tabelami
Teraz, po utworzeniu tych dwóch tabel, po prostu skopiujemy dane z pierwszej do nowo utworzonej tabeli. Konwersja zostanie wykonana przez silnik Hive. Nie musisz wiedzieć w jaki sposób działa to “pod maską”, żeby zmienić format.
INSERT OVERWRITE TABLE DATA_IN_ORC PARTITION (INGESTION_ID) SELECT ID, NAME, AGE, INGESTION_ID FORM DATA_IN_CSV;
Przykłady dla Avro i Parquet
-- Avro format CREATE TABLE data_in_avro ( id int, name string, age int ) PARTITIONED BY (INGESTION_ID BIGINT) STORED AS AVRO; -- Parquet format CREATE TABLE data_in_parquet ( id int, name string, age int ) PARTITIONED BY (LOADING_DATE STRING) STORED AS STORED AS PARQUET;