Hive – najlepszy sposób konwertowania danych z jednego formatu na inny (CSV, Parquet, Avro, ORC)

Hive – najlepszy sposób konwertowania danych z jednego formatu na inny (CSV, Parquet, Avro, ORC)

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;

Jeśli spodobał Ci się ten post to napisz proszę komentarz poniżej oraz udostępnij ten post na swoim Facebook’u, Twitter’ze, LinkedIn lub innej stronie z mediami społecznościowymi.
Z góry dzięki!

Please follow and like us:
error

Dodaj komentarz

Close Menu
Social media & sharing icons powered by UltimatelySocial
error

Enjoy this blog? Please spread the word :)