使用Take和InsertInto命令的Spark Scala性能问题

时间:2019-01-15 16:10:28

标签: scala apache-spark

请查看所附的屏幕截图。

我正在尝试对我的spark工作进行一些性能改进,并且花了将近5分钟的时间对数据帧执行take动作。

我正在使用take来确保数据帧中有一些记录,如果存在,我想继续进行进一步的处理。

我尝试计算并认为执行时间没有太大差异。

另一种场景,大约需要10分钟将datafraemw写入配置单元表(最多200行和10列)。

df.write.mode(“ append”)。partitionBy(“ date”)。insertInto(表名)

请提出如何最大程度地减少花在插入蜂巢表中的时间。

enter image description here

更新:

这是我的saprk提交:spark-submit --master yarn-cluster --class com.xxxx.info.InfoAssets --conf“ spark.executor.extraJavaOptions = -XX:+ UseCompressedOops -XX:+ PrintGCDetails -XX :+ PrintGCTimeStamps -Djava.security.auth.login.config = kafka_spark_jaas.conf“ --files /home/ngap.app.rcrp/hive-site.xml,/home//kafka_spark_jaas.conf,/​​etc/security/keytabs /ngap.sa.rcrp.keytab --jars /usr/hdp/current/spark-client/lib/datanucleus-api-jdo-3.2.6.jar,/usr/hdp/current/spark-client/lib/datanucleus -core-3.2.10.jar,/ usr / hdp / current / spark-client / lib / datanucleus-rdbms-3.2.9.jar --executor内存3G --num-executors 3 --executor-cores 10 / home / InfoAssets / InfoAssets.jar

  • 代码详细信息:

它是一个简单的数据框,其中有8列,其中包含约200条记录,我正在使用以下代码将其插入到配置单元表中。

df.write.mode(“ append”)。partitionBy(“ partkey”)。insertInto(hiveDB +“。” + tableName)

谢谢,宝贝

1 个答案:

答案 0 :(得分:0)

如果没有必要,并且已经创建了表,则不要在写入前使用count,然后使用Spark SQL将数据插入到Hive分区表中。

spark.sql("Insert into <tgt tbl> partition(<col name>) select cols,partition col from temp_tbl")