kevinjmh commented on a change in pull request #3518: [DOC] add 
performance-tuning with codegen parameters support
URL: https://github.com/apache/carbondata/pull/3518#discussion_r364526817
 
 

 ##########
 File path: docs/query-with-spark-sql-performance -tuning.md
 ##########
 @@ -0,0 +1,58 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more 
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership. 
+    The ASF licenses this file to you under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with 
+    the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing, software 
+    distributed under the License is distributed on an "AS IS" BASIS, 
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and 
+    limitations under the License.
+-->
+
+# Query with spark-sql performacne tuning
+  This tutorial guides you to create CarbonData Tables and optimize 
performance.
+  The following sections will elaborate on the below topics :
+
+  * [The influence of spark.sql.codegen.wholeStage configuration on 
query](#The influence of spark.sql.codegen.wholeStage configuration on query)
+
+## The influence of spark.sql.codegen.wholeStage configuration on query 
+
+In practice, we found that when the number of columns applied SUM operator 
reaches a certain threshold, the query time increases dramatically.  we define 
"counter" for the meaning of columns applied SUM operator. Below will use  
"counter" instead of the columns applied SUM operator.
+
+As shown in the figure below(spark 2.1):
+
+![File Directory Structure](../docs/images/codegen.png?raw=true)
+
+The horizontal axis is the number of counter, and the vertical axis is the 
time consumed in seconds.
+
+It can be seen from the figure that when the number of counter exceeds 85, the 
query time is significantly increased.
+
+After analysis, this problem is related to 
["spark.sql.codegen.wholeStage"](https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-whole-stage-codegen.html),
 which is enabled by default since spark 2.0. and it will do all the *internal 
optimization possible from the spark catalyst side*. 
+
+**Whole-Stage Java Code Generation** (aka *Whole-Stage CodeGen*) is a physical 
query optimization in Spark SQL that fuses multiple physical operators (as a 
subtree of plans that [support code 
generation](https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-CodegenSupport.html))
 together into a single Java function.
+
+Whole-Stage Java Code Generation improves the execution performance of a query 
by collapsing a query tree into a single optimized function that eliminates 
virtual function calls and leverages CPU registers for intermediate data.
+
+When counter is too large, the logic calculation function of hashaggregate 
operator is too large (there are nearly 3000 lines of code when there are 34 
counters). Java itself does not recommend too large methods, which will reduce 
the processing efficiency, and exceed the JIT threshold, making the final 
execution in the way of interpretation. When the query grows in the counter, 
the performance drops sharply.
 
 Review comment:
   As the number of counter grows, generated codes for data process become 
larger. There are nearly 3000 lines of code when 34 counters. Java does not 
recommend huge methods, which can not make use of JIT and the code will run in 
interpretation mode. So the performance drops sharply when the counter in query 
grows.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to