Мы переходим с Greenplum на HDFS.
Данные поступают из исходных таблиц в Greenplum через огромный ETL, а из Greenplum мы просто выгружаем данные в HDFS с помощью Spark.
Поэтому я пытаюсь прочитать таблицу GP и загрузить ее в таблицы Hive на HDFS с помощью Spark.
У меня есть данные, считанные из таблицы GP, как показано ниже:
val yearDF = spark.read.format("jdbc").option("url", connectionUrl)
.option("dbtable", s"(${execQuery}) as year2017")
.option("user", devUserName)
.option("password", devPassword)
.option("numPartitions",10)
.load()
Существуют различные варианты сохранения кадра данных в таблице Hive.
Первый метод:
yearDf.write().mode("overwrite").partitionBy("source_system_name","period_year","period_num").saveAsTable("schemaName.tableName");
Второй метод:
myDf.createOrReplaceTempView("yearData");
spark.sql("insert into schema.table partition("source_system_name","period_year","period_num") select * from yearData");
Каковы плюсы и минусы вышеупомянутых способов?
У нас есть огромные таблицы, которые обычно загружают данные в Hive. Может ли кто-нибудь сообщить мне, какой эффективный и рекомендуемый способ сохранения данных из кадра данных в таблицу Hive?