请查看所附的屏幕截图。
我正在尝试对我的spark工作进行一些性能改进,并且花了将近5分钟的时间对数据帧执行take动作。
我正在使用take来确保数据帧中有一些记录,如果存在,我想继续进行进一步的处理。
我尝试计算并认为执行时间没有太大差异。
另一种场景,大约需要10分钟将datafraemw写入配置单元表(最多200行和10列)。
df.write.mode(“ append”)。partitionBy(“ date”)。insertInto(表名)
请提出如何最大程度地减少花在插入蜂巢表中的时间。
更新:
这是我的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)
谢谢,宝贝
答案 0 :(得分:0)
如果没有必要,并且已经创建了表,则不要在写入前使用count,然后使用Spark SQL将数据插入到Hive分区表中。
spark.sql("Insert into <tgt tbl> partition(<col name>) select cols,partition col from temp_tbl")