火花(独立模式):2.2.1配置单元:2.2。全部具有默认配置。 Spark,Hive和Hadoop位于同一群集中,包括3个节点(8G Mem,8个2.1G内核)。
我们使用RabbitMQ接收消息;在MQ使用者中,我们将json消息转换为Dataframe(1条消息用于1条记录),并使用pyspark通过以下pyspark代码将数据帧插入到HIVE Orc格式的表中:
df = self.spark.createDataFrame(df)
df.createOrReplaceTempView("tmp_table")
spark.sql("insert into table {} select * from tmp_table".format(table_name))
spark.sql()函数花费3秒钟以上。随着时间的流逝,它变得越来越慢,并且可能花费超过10秒。我们检查了Spark日志,实际上sql作业花费的时间不到1秒,通常为0.2〜0.6秒。
我们在Orc之前尝试镶木地板,还将执行器的内存从1G扩大到2G。没有太大的区别。 Hive表未分区。
关键问题是什么?