将数据框保存到Hive表中的有效方法是什么?

时间:2018-09-04 18:22:06

标签: apache-spark hive apache-spark-sql

我们正在从Greenplum迁移到HDFS。 数据通过巨大的ETL从源表发送到Greenplum,并从Greenplum发送,我们只是使用Spark将数据转储到HDFS中。 因此,我正在尝试读取GP表,并使用Spark将其加载到HDFS的Hive表中。

我从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表的有效且推荐的方法?

0 个答案:

没有答案