Merge branch 'gerrit/ionic' into 'master'
Change-Id: I41a459106dd4f34c678acb13ac1a5e860a298163
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/full-scan/full-scan.3.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/full-scan/full-scan.3.regexjson
index 68c1311..106c58a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/full-scan/full-scan.3.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/full-scan/full-scan.3.regexjson
@@ -40,7 +40,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -51,7 +54,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -60,7 +66,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
}
]
},
@@ -77,7 +86,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -86,7 +98,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/non-unary-subplan/non-unary-subplan.3.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/non-unary-subplan/non-unary-subplan.3.regexjson
index 3217ebd..946db29 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/non-unary-subplan/non-unary-subplan.3.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/non-unary-subplan/non-unary-subplan.3.regexjson
@@ -36,7 +36,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -45,7 +48,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -54,7 +60,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -63,7 +72,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -72,7 +84,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -81,7 +96,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -90,7 +108,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -99,7 +120,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -108,7 +132,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -117,7 +144,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -126,7 +156,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -135,7 +168,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -144,7 +180,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -183,7 +222,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -192,7 +234,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -201,7 +246,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{(?s).*}",
@@ -210,7 +258,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{[0-9.]+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
}
]
}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/plansleep/sleep.3.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/plansleep/sleep.3.regexjson
index 2754d24..28562e7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/plansleep/sleep.3.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/plansleep/sleep.3.regexjson
@@ -42,6 +42,12 @@
"min-cardinality": 3,
"max-cardinality": 3,
"total-cardinality": 3,
+ "min-tuple-size": 39,
+ "max-tuple-size": 44,
+ "avg-tuple-size": 41.666666666666664,
+ "frame-count": 1,
+ "avg-tuples-per-frame": 3.0,
+ "tuple-bytes": "125 bytes",
"physical-operator": "STREAM_PROJECT",
"execution-mode": "PARTITIONED",
"optimizer-estimates": {
@@ -93,7 +99,13 @@
"max-time": "R{[0-9.]+}",
"min-cardinality": 3,
"max-cardinality": 3,
- "total-cardinality": 3
+ "total-cardinality": 3,
+ "min-tuple-size": 53,
+ "max-tuple-size": 63,
+ "avg-tuple-size": 58.333333333333336,
+ "frame-count": 1,
+ "avg-tuples-per-frame": 3.0,
+ "tuple-bytes": "175 bytes"
}
],
"physical-operator": "STABLE_SORT [$$49(ASC)]",
@@ -137,6 +149,12 @@
"min-cardinality": 3,
"max-cardinality": 3,
"total-cardinality": 3,
+ "min-tuple-size": 53,
+ "max-tuple-size": 63,
+ "avg-tuple-size": 58.333333333333336,
+ "frame-count": 1,
+ "avg-tuples-per-frame": 3.0,
+ "tuple-bytes": "175 bytes",
"physical-operator": "ASSIGN",
"execution-mode": "PARTITIONED",
"optimizer-estimates": {
@@ -165,6 +183,12 @@
"min-cardinality": 3,
"max-cardinality": 3,
"total-cardinality": 3,
+ "min-tuple-size": 53,
+ "max-tuple-size": 63,
+ "avg-tuple-size": 58.333333333333336,
+ "frame-count": 1,
+ "avg-tuples-per-frame": 3.0,
+ "tuple-bytes": "175 bytes",
"physical-operator": "ASSIGN",
"execution-mode": "PARTITIONED",
"optimizer-estimates": {
@@ -233,7 +257,13 @@
"max-time": "R{[0-9.]+}",
"min-cardinality": 3,
"max-cardinality": 3,
- "total-cardinality": 3
+ "total-cardinality": 3,
+ "min-tuple-size": 27,
+ "max-tuple-size": 32,
+ "avg-tuple-size": 29.666666666666668,
+ "frame-count": 1,
+ "avg-tuples-per-frame": 3.0,
+ "tuple-bytes": "89 bytes"
}
],
"physical-operator": "SORT_GROUP_BY[$$56]",
@@ -309,7 +339,13 @@
"max-time": "R{[0-9.]+}",
"min-cardinality": 3,
"max-cardinality": 3,
- "total-cardinality": 3
+ "total-cardinality": 3,
+ "min-tuple-size": 27,
+ "max-tuple-size": 32,
+ "avg-tuple-size": 29.666666666666668,
+ "frame-count": 1,
+ "avg-tuples-per-frame": 3.0,
+ "tuple-bytes": "89 bytes"
}
],
"physical-operator": "SORT_GROUP_BY[$$50]",
@@ -352,6 +388,12 @@
"min-cardinality": "R{[0-9.]+}",
"max-cardinality": "R{[0-9.]+}",
"total-cardinality": "R{[0-9.]+}",
+ "min-tuple-size": "R{[0-9.]+}",
+ "max-tuple-size": "R{[0-9.]+}",
+ "avg-tuple-size": "R{[0-9.]+}",
+ "frame-count": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
"physical-operator": "ASSIGN",
"execution-mode": "PARTITIONED",
"optimizer-estimates": {
@@ -371,6 +413,12 @@
"min-cardinality": 5,
"max-cardinality": 5,
"total-cardinality": 5,
+ "min-tuple-size": 142,
+ "max-tuple-size": 151,
+ "avg-tuple-size": 145.6,
+ "frame-count": 1,
+ "avg-tuples-per-frame": 5.0,
+ "tuple-bytes": "728 bytes",
"physical-operator": "STREAM_SELECT",
"execution-mode": "PARTITIONED",
"optimizer-estimates": {
@@ -392,6 +440,12 @@
"min-cardinality": 10,
"max-cardinality": 10,
"total-cardinality": 10,
+ "min-tuple-size": 137,
+ "max-tuple-size": 151,
+ "avg-tuple-size": 143.1,
+ "frame-count": 1,
+ "avg-tuples-per-frame": 10.0,
+ "tuple-bytes": "1 KB",
"physical-operator": "STREAM_PROJECT",
"execution-mode": "PARTITIONED",
"optimizer-estimates": {
@@ -428,6 +482,12 @@
"min-cardinality": 10,
"max-cardinality": 10,
"total-cardinality": 10,
+ "min-tuple-size": 150,
+ "max-tuple-size": 164,
+ "avg-tuple-size": 156.1,
+ "frame-count": 1,
+ "avg-tuples-per-frame": 10.0,
+ "tuple-bytes": "1 KB",
"physical-operator": "DATASOURCE_SCAN",
"execution-mode": "PARTITIONED",
"optimizer-estimates": {
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.3.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.3.regexjson
index b83927a..d5ceca0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.3.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.3.regexjson
@@ -23,7 +23,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -34,16 +37,22 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
"run-time": "R{5.+}",
"runtime-id": "R{.+}",
"cardinality-out": 10,
- "avg-tuple-size": 25,
+ "avg-tuple-size": 25.0,
"min-tuple-size": 25,
- "max-tuple-size": 25
+ "max-tuple-size": 25,
+ "tuple-bytes": 250,
+ "frames-processed": 1,
+ "avg-tuples-per-frame": 10.0
},
{
"name": "R{.+}",
@@ -52,7 +61,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.4.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.4.regexjson
index 87b6ab1..aafd143 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.4.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.4.regexjson
@@ -40,7 +40,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
}
]
},
@@ -70,7 +73,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -79,7 +85,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -99,9 +108,12 @@
"run-time": "R{[0-9.]+}",
"runtime-id": "R{.+}",
"cardinality-out": 10,
- "avg-tuple-size": 140,
+ "avg-tuple-size": 143.1,
"min-tuple-size": 137,
- "max-tuple-size": 151
+ "max-tuple-size": 151,
+ "tuple-bytes": 1431,
+ "frames-processed": 1,
+ "avg-tuples-per-frame": 10.0
},
{
"name": "R{.+}",
@@ -112,7 +124,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -121,7 +136,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -130,7 +148,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -139,7 +160,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.5.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.5.regexjson
index 187c3c1..a107d0a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.5.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/profile/sleep/sleep.5.regexjson
@@ -40,7 +40,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
}
]
},
@@ -70,7 +73,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -79,7 +85,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -88,7 +97,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -127,7 +139,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
}
]
},
@@ -144,7 +159,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -155,7 +173,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -164,7 +185,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -173,7 +197,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -182,7 +209,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
@@ -204,7 +234,10 @@
"cardinality-out": "R{[0-9.]+}",
"avg-tuple-size": "R{[0-9.]+}",
"min-tuple-size": "R{[0-9.]+}",
- "max-tuple-size": "R{[0-9.]+}"
+ "max-tuple-size": "R{[0-9.]+}",
+ "tuple-bytes": "R{.+}",
+ "frames-processed": "R{[0-9.]+}",
+ "avg-tuples-per-frame": "R{[0-9.]+}"
},
{
"name": "R{.+}",
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/delta/DeltaReaderFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/delta/DeltaReaderFactory.java
index 10a527e..8328ec3 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/delta/DeltaReaderFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/delta/DeltaReaderFactory.java
@@ -100,6 +100,7 @@
throws AlgebricksException, HyracksDataException {
JobConf conf = new JobConf();
ICcApplicationContext appCtx = (ICcApplicationContext) serviceCtx.getApplicationContext();
+ locationConstraints = getPartitions(appCtx);
configureJobConf(appCtx, conf, configuration);
confFactory = new ConfFactory(conf);
String tableMetadataPath = getTablePath(configuration);
@@ -156,7 +157,6 @@
scanFiles = getScanFiles(scan, engine);
}
LOGGER.info("Number of delta table parquet data files to scan: {}", scanFiles.size());
- locationConstraints = getPartitions(appCtx);
configuration.put(ExternalDataConstants.KEY_PARSER, ExternalDataConstants.FORMAT_DELTA);
distributeFiles(scanFiles, getPartitionConstraint().getLocations().length);
issueWarnings(warnings, warningCollector);
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
index 05d4365..a9be120 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
@@ -28,6 +28,7 @@
import java.util.Objects;
import java.util.Optional;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
@@ -116,6 +117,18 @@
private static final String MAX_CARDINALITY = "max-cardinality";
private static final String TOTAL_CARDINALITY = "total-cardinality";
+
+ private static final String MIN_TUPLE_SIZE = "min-tuple-size";
+
+ private static final String MAX_TUPLE_SIZE = "max-tuple-size";
+
+ private static final String AVG_TUPLE_SIZE = "avg-tuple-size";
+
+ private static final String FRAME_COUNT = "frame-count";
+
+ private static final String TUPLE_BYTES = "tuple-bytes";
+
+ private static final String AVG_TUPLES_PER_FRAME = "avg-tuples-per-frame";
private static final String NAME = "name";
private static final String ID = "id";
private static final String RUNTIME_ID = "runtime-id";
@@ -266,18 +279,53 @@
}
+ private static class WeightedAvg {
+ private long totalCard = 0;
+ private double weightedSum = 0.0;
+ private double avg = 0.0;
+
+ public void update(double val, long card) {
+ weightedSum += val * card;
+ totalCard += card;
+ avg = totalCard > 0 ? weightedSum / totalCard : 0.0;
+ }
+
+ }
+
private class OperatorProfile {
Map<String, String> activityNames;
Map<String, MinMax<Double>> activityTimes;
Map<String, MinMax<Long>> activityCards;
Map<String, Long> activityCardTotal;
+ Map<String, MinMax<Long>> activityTupleSizes;
+ Map<String, WeightedAvg> activityAvgTupleSizes;
+ Map<String, Long> activityFrameCountTotal;
+ Map<String, WeightedAvg> activityAvgTuplesPerFrame;
+ Map<String, Long> activityTupleBytes;
OperatorProfile() {
activityNames = new HashMap<>();
activityTimes = new HashMap<>();
activityCards = new HashMap<>();
activityCardTotal = new HashMap<>();
+ activityTupleSizes = new HashMap<>();
+ activityAvgTupleSizes = new HashMap<>();
+ activityFrameCountTotal = new HashMap<>();
+ activityAvgTuplesPerFrame = new HashMap<>();
+ activityTupleBytes = new HashMap<>();
+ }
+
+ void updateOperator(String extendedOpId, String name, double time, long cardinality, long minSize, long maxSize,
+ double avgSize, long frameCount, double avgTuples, long tupleBytes) {
+ updateOperator(extendedOpId, name, time, cardinality);
+ updateMinMax(minSize, extendedOpId, activityTupleSizes);
+ updateMinMax(maxSize, extendedOpId, activityTupleSizes);
+ updateAverage(avgSize, cardinality, extendedOpId, activityAvgTupleSizes);
+ activityFrameCountTotal.compute(extendedOpId,
+ (id, calls) -> calls == null ? frameCount : calls + frameCount);
+ updateAverage(avgTuples, cardinality, extendedOpId, activityAvgTuplesPerFrame);
+ activityTupleBytes.compute(extendedOpId, (id, bytes) -> bytes == null ? tupleBytes : bytes + tupleBytes);
}
void updateOperator(String extendedOpId, String name, double time, long cardinality) {
@@ -295,6 +343,11 @@
MinMax<T> stat = opMap.computeIfAbsent(id, i -> new MinMax<>(comp));
stat.update(comp);
}
+
+ private void updateAverage(double avg, long card, String id, Map<String, WeightedAvg> opMap) {
+ WeightedAvg stat = opMap.computeIfAbsent(id, i -> new WeightedAvg());
+ stat.update(avg, card);
+ }
}
private Pair<ExtendedActivityId, String> splitAcId(String name) {
@@ -314,9 +367,18 @@
profiledOps.computeIfAbsent(counters.get(RUNTIME_ID).asText(), i -> new OperatorProfile());
Pair<ExtendedActivityId, String> identities = splitAcId(counters.get(NAME).asText());
JsonNode card = counters.get("cardinality-out");
- if (card != null) {
+ JsonNode minTupleSz = counters.get("min-tuple-size");
+ JsonNode maxTupleSz = counters.get("max-tuple-size");
+ JsonNode avgTupleSz = counters.get("avg-tuple-size");
+ JsonNode tupleBytes = counters.get("tuple-bytes");
+ JsonNode framesProcessedNode = counters.get("frames-processed");
+ JsonNode avgTuplesPerFrameNode = counters.get("avg-tuples-per-frame");
+ if (card != null && minTupleSz != null && maxTupleSz != null && avgTupleSz != null
+ && framesProcessedNode != null && avgTuplesPerFrameNode != null && tupleBytes != null) {
info.updateOperator(identities.first.getActivityAndLocalId(), identities.second,
- counters.get("run-time").asDouble(), card.asLong(0));
+ counters.get("run-time").asDouble(), card.asLong(), minTupleSz.asLong(),
+ maxTupleSz.asLong(), avgTupleSz.asDouble(), framesProcessedNode.asLong(),
+ avgTuplesPerFrameNode.asDouble(), tupleBytes.asLong());
} else {
info.updateOperator(identities.first.getActivityAndLocalId(), identities.second,
counters.get("run-time").asDouble());
@@ -394,7 +456,9 @@
}
private void printActivityStats(Optional<MinMax<Double>> time, Optional<MinMax<Long>> card,
- Optional<Long> totalCard) throws IOException {
+ Optional<Long> totalCard, Optional<MinMax<Long>> tupleSize, Optional<WeightedAvg> avgTupleSize,
+ Optional<Long> frameCount, Optional<WeightedAvg> avgTuplesPerFrame, Optional<Long> tupleBytes)
+ throws IOException {
if (time.isPresent()) {
jsonGenerator.writeNumberField(MIN_TIME, time.get().min);
jsonGenerator.writeNumberField(MAX_TIME, time.get().max);
@@ -406,6 +470,22 @@
if (totalCard.isPresent()) {
jsonGenerator.writeNumberField(TOTAL_CARDINALITY, totalCard.get());
}
+ if (tupleSize.isPresent()) {
+ jsonGenerator.writeNumberField(MIN_TUPLE_SIZE, tupleSize.get().min);
+ jsonGenerator.writeNumberField(MAX_TUPLE_SIZE, tupleSize.get().max);
+ }
+ if (avgTupleSize.isPresent()) {
+ jsonGenerator.writeNumberField(AVG_TUPLE_SIZE, avgTupleSize.get().avg);
+ }
+ if (frameCount.isPresent()) {
+ jsonGenerator.writeNumberField(FRAME_COUNT, frameCount.get());
+ }
+ if (avgTuplesPerFrame.isPresent()) {
+ jsonGenerator.writeNumberField(AVG_TUPLES_PER_FRAME, avgTuplesPerFrame.get().avg);
+ }
+ if (tupleBytes.isPresent()) {
+ jsonGenerator.writeStringField(TUPLE_BYTES, FileUtils.byteCountToDisplaySize(tupleBytes.get()));
+ }
}
private void printOperatorStats(OperatorProfile info) throws IOException {
@@ -413,7 +493,13 @@
Optional<MinMax<Double>> times = info.activityTimes.values().stream().findFirst();
Optional<MinMax<Long>> cards = info.activityCards.values().stream().findFirst();
Optional<Long> total = info.activityCardTotal.values().stream().findFirst();
- printActivityStats(times, cards, total);
+ Optional<MinMax<Long>> tupleSizes = info.activityTupleSizes.values().stream().findFirst();
+ Optional<WeightedAvg> avgTupleSize = info.activityAvgTupleSizes.values().stream().findFirst();
+ Optional<Long> frameCount = info.activityFrameCountTotal.values().stream().findFirst();
+ Optional<WeightedAvg> avgTuplesPerFrame = info.activityAvgTuplesPerFrame.values().stream().findFirst();
+ Optional<Long> tupleBytes = info.activityTupleBytes.values().stream().findFirst();
+ printActivityStats(times, cards, total, tupleSizes, avgTupleSize, frameCount, avgTuplesPerFrame,
+ tupleBytes);
} else if (info.activityTimes.size() > 1) {
jsonGenerator.writeArrayFieldStart("activity-stats");
for (String acId : info.activityTimes.keySet()) {
@@ -425,7 +511,12 @@
jsonGenerator.writeStringField("id", acId);
printActivityStats(Optional.ofNullable(info.activityTimes.get(acId)),
Optional.ofNullable(info.activityCards.get(acId)),
- Optional.ofNullable(info.activityCardTotal.get(acId)));
+ Optional.ofNullable(info.activityCardTotal.get(acId)),
+ Optional.ofNullable(info.activityTupleSizes.get(acId)),
+ Optional.ofNullable(info.activityAvgTupleSizes.get(acId)),
+ Optional.ofNullable(info.activityFrameCountTotal.get(acId)),
+ Optional.ofNullable(info.activityAvgTuplesPerFrame.get(acId)),
+ Optional.ofNullable(info.activityTupleBytes.get(acId)));
jsonGenerator.writeEndObject();
}
jsonGenerator.writeEndArray();
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ProfiledFrameWriter.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ProfiledFrameWriter.java
index fb4ed3c..53de340 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ProfiledFrameWriter.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ProfiledFrameWriter.java
@@ -44,7 +44,6 @@
protected IOperatorStats inputStats = NoOpOperatorStats.INSTANCE;
private int minSz = Integer.MAX_VALUE;
private int maxSz = -1;
- private long avgSz;
private final ICounter totalTime;
@@ -87,23 +86,22 @@
int tupleCountOffset = FrameHelper.getTupleCountOffset(buffer.limit());
int tupleCount = IntSerDeUtils.getInt(buffer.array(), tupleCountOffset);
ICounter tupleCounter = inputStats.getTupleCounter();
- long prevCount = tupleCounter.get();
+ long tupleSizes = 0;
for (int i = 0; i < tupleCount; i++) {
int tupleLen = getTupleLength(i, tupleCountOffset, buffer);
+ tupleSizes += tupleLen;
if (maxSz < tupleLen) {
maxSz = tupleLen;
}
if (minSz > tupleLen) {
minSz = tupleLen;
}
- long prev = avgSz * prevCount;
- avgSz = (prev + tupleLen) / (prevCount + 1);
- prevCount++;
}
inputStats.getMaxTupleSz().set(maxSz);
inputStats.getMinTupleSz().set(minSz);
- inputStats.getAverageTupleSz().set(avgSz);
+ inputStats.getTupleBytes().update(tupleSizes);
tupleCounter.update(tupleCount);
+ inputStats.getTotalFrameCount().update(1);
}
@Override
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/IOperatorStats.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/IOperatorStats.java
index 2dd7b41..6b6f64a 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/IOperatorStats.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/IOperatorStats.java
@@ -72,10 +72,10 @@
ICounter cloudPersistPageCounter();
/**
- * @return A counter used to set the average tuple size outputted by an operator
+ * @return A counter used to set the total number of tuple bytes outputted by an operator
*/
- ICounter getAverageTupleSz();
+ ICounter getTupleBytes();
/**
* @return A counter used to set the max tuple size outputted by an operator
@@ -94,6 +94,8 @@
* like index searches or other scan types
*/
+ ICounter getTotalFrameCount();
+
ICounter getInputTupleCounter();
ICounter getLevel();
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/NoOpOperatorStats.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/NoOpOperatorStats.java
index 8219d2f..57dd546 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/NoOpOperatorStats.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/NoOpOperatorStats.java
@@ -110,7 +110,7 @@
}
@Override
- public ICounter getAverageTupleSz() {
+ public ICounter getTupleBytes() {
return NOOP_COUNTER;
}
@@ -125,6 +125,11 @@
}
@Override
+ public ICounter getTotalFrameCount() {
+ return NOOP_COUNTER;
+ }
+
+ @Override
public ICounter getInputTupleCounter() {
return NOOP_COUNTER;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/OperatorStats.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/OperatorStats.java
index 9dbac3d..93ee0cd 100644
--- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/OperatorStats.java
+++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/OperatorStats.java
@@ -28,7 +28,7 @@
import org.apache.hyracks.api.job.profiling.counters.ICounter;
public class OperatorStats implements IOperatorStats {
- private static final long serialVersionUID = 6401830963361567126L;
+ private static final long serialVersionUID = 6401830963361567128L;
public final String operatorName;
public final String operatorId;
@@ -39,10 +39,11 @@
public final ICounter cloudReadRequestCounter;
public final ICounter cloudReadPageCounter;
public final ICounter cloudPersistPageCounter;
- public final ICounter avgTupleSz;
+ public final ICounter tupleBytes;
public final ICounter minTupleSz;
public final ICounter maxTupleSz;
public final ICounter inputTupleCounter;
+ public final ICounter frameCounter;
public final ICounter level;
public final ICounter bytesRead;
public final ICounter bytesWritten;
@@ -63,10 +64,11 @@
cloudReadRequestCounter = new Counter("cloudReadRequestCounter");
cloudReadPageCounter = new Counter("cloudReadPageCounter");
cloudPersistPageCounter = new Counter("cloudPersistPageCounter");
- avgTupleSz = new Counter("avgTupleSz");
+ tupleBytes = new Counter("tupleBytes");
minTupleSz = new Counter("minTupleSz");
maxTupleSz = new Counter("maxTupleSz");
inputTupleCounter = new Counter("inputTupleCounter");
+ frameCounter = new Counter("frameCounter");
level = new Counter("level");
bytesRead = new Counter("bytesRead");
bytesWritten = new Counter("bytesWritten");
@@ -115,11 +117,6 @@
}
@Override
- public ICounter getAverageTupleSz() {
- return avgTupleSz;
- }
-
- @Override
public ICounter getMaxTupleSz() {
return maxTupleSz;
}
@@ -130,6 +127,11 @@
}
@Override
+ public ICounter getTupleBytes() {
+ return tupleBytes;
+ }
+
+ @Override
public ICounter getInputTupleCounter() {
return inputTupleCounter;
}
@@ -150,6 +152,11 @@
}
@Override
+ public ICounter getTotalFrameCount() {
+ return frameCounter;
+ }
+
+ @Override
public String getOperatorId() {
return operatorId;
}
@@ -195,10 +202,11 @@
output.writeLong(cloudReadRequestCounter.get());
output.writeLong(cloudReadPageCounter.get());
output.writeLong(cloudPersistPageCounter.get());
- output.writeLong(avgTupleSz.get());
+ output.writeLong(tupleBytes.get());
output.writeLong(minTupleSz.get());
output.writeLong(maxTupleSz.get());
output.writeLong(inputTupleCounter.get());
+ output.writeLong(frameCounter.get());
output.writeLong(level.get());
output.writeLong(bytesRead.get());
output.writeLong(bytesWritten.get());
@@ -214,10 +222,11 @@
cloudReadRequestCounter.set(input.readLong());
cloudReadPageCounter.set(input.readLong());
cloudPersistPageCounter.set(input.readLong());
- avgTupleSz.set(input.readLong());
+ tupleBytes.set(input.readLong());
minTupleSz.set(input.readLong());
maxTupleSz.set(input.readLong());
inputTupleCounter.set(input.readLong());
+ frameCounter.set(input.readLong());
level.set(input.readLong());
bytesRead.set(input.readLong());
bytesWritten.set(input.readLong());
@@ -249,10 +258,11 @@
+ cloudReadRequestCounter.getName() + "\": " + cloudReadRequestCounter.get() + ", \""
+ cloudReadPageCounter.getName() + "\": " + cloudReadPageCounter.get() + ", \""
+ cloudPersistPageCounter.getName() + "\": " + cloudPersistPageCounter.get() + ", \""
- + avgTupleSz.getName() + "\": " + avgTupleSz.get() + ", \"" + minTupleSz.getName() + "\": "
- + minTupleSz.get() + ", \"" + minTupleSz.getName() + "\": " + timeCounter.get() + ", \""
- + inputTupleCounter.getName() + "\": " + bytesRead.get() + ", \"" + bytesRead.getName() + "\": "
- + bytesWritten.get() + ", \"" + bytesWritten.getName() + "\": " + inputTupleCounter.get() + ", \""
- + level.getName() + "\": " + level.get() + ", \"indexStats\": \"" + indexesStats + "\" }";
+ + tupleBytes.getName() + "\": " + tupleBytes.get() + ", \"" + minTupleSz.getName() + "\": "
+ + minTupleSz.get() + ", \"" + maxTupleSz.getName() + "\": " + maxTupleSz.get() + ", \""
+ + inputTupleCounter.getName() + "\": " + inputTupleCounter.get() + ", \"" + frameCounter.getName()
+ + "\": " + frameCounter.get() + ", \"" + bytesRead.getName() + "\": " + bytesRead.get() + ", \""
+ + bytesWritten.getName() + "\": " + bytesWritten.get() + ", \"" + level.getName() + "\": " + level.get()
+ + ", \"indexStats\": \"" + indexesStats + "\" }";
}
}
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/TaskProfile.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/TaskProfile.java
index b66be1e..e361e42 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/TaskProfile.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/TaskProfile.java
@@ -142,9 +142,13 @@
}
if (value.getTupleCounter().get() > 0) {
jpe.put("cardinality-out", value.getTupleCounter().get());
- jpe.put("avg-tuple-size", value.getAverageTupleSz().get());
+ jpe.put("avg-tuple-size", (double) value.getTupleBytes().get() / value.getTupleCounter().get());
jpe.put("min-tuple-size", value.getMinTupleSz().get());
jpe.put("max-tuple-size", value.getMaxTupleSz().get());
+ jpe.put("tuple-bytes", value.getTupleBytes().get());
+ jpe.put("frames-processed", value.getTotalFrameCount().get());
+ jpe.put("avg-tuples-per-frame",
+ (double) value.getTupleCounter().get() / value.getTotalFrameCount().get());
}
if (value.getLevel().get() > -1) {
jpe.put("level", value.getLevel().get());
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/ColumnRanges.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/ColumnRanges.java
index de2d1e8..6cf43bf 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/ColumnRanges.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/ColumnRanges.java
@@ -126,10 +126,9 @@
int columnOrdinal = 0;
for (int i = 0; i < numberOfColumns; i++) {
- if (offsetColumnIndexPairs[i] == 0) { // any column's offset can't be zero
- LOGGER.warn(
- "Unexpected zero column offset at index {}. This may indicate a logic error or data inconsistency.",
- i);
+ if (offsetColumnIndexPairs[i] == 0) {
+ //Any requested column's offset can't be zero
+ //In case a column is not being present in the accessed pageZero segments, it will be defaulted to 0
continue;
}
int columnIndex = getColumnIndexFromPair(offsetColumnIndexPairs[i]);