Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Qualification tool hook up final output based on per exec analysis #5550

Merged
merged 110 commits into from
May 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
55c8384
QualificationTool. Add speedup information to AppSummaryInfo
amahussein May 10, 2022
82a5a9b
address review comments
amahussein May 11, 2022
9d0cbc3
debug
tgravescs May 11, 2022
af060fb
check for dataset
tgravescs May 11, 2022
ed74657
change dataset check for all
tgravescs May 11, 2022
17b39c7
test unsupported time
tgravescs May 11, 2022
6b2d419
more changes
tgravescs May 12, 2022
c14e2e3
fix to string
tgravescs May 13, 2022
da9665d
fix including wholestage codegen
tgravescs May 13, 2022
a68deae
put unsupported Dur
tgravescs May 13, 2022
c965c1c
calculate duration of non sql stages
tgravescs May 13, 2022
53668a4
change to get stage task time
tgravescs May 13, 2022
480ddee
combine
tgravescs May 13, 2022
c7aa64b
hooking up final output
tgravescs May 13, 2022
9b09b23
initial scores changes
tgravescs May 13, 2022
5ad9ec4
logging
tgravescs May 13, 2022
5af6d70
logging
tgravescs May 13, 2022
3abed14
update factor
tgravescs May 13, 2022
c0f3bb5
gturn off some logging:
tgravescs May 13, 2022
b8b0ad9
debug
tgravescs May 13, 2022
e941ca4
Merge remote-tracking branch 'origin/branch-22.06' into qualStageMetrics
tgravescs May 13, 2022
718a32a
track execs without stages
tgravescs May 13, 2022
14419e8
Add in exec info output
tgravescs May 13, 2022
1a1b5d1
fix output
tgravescs May 13, 2022
f715975
add sorting
tgravescs May 13, 2022
5fbe980
fix output
tgravescs May 13, 2022
aaf3873
fix output sizes
tgravescs May 13, 2022
ad365cd
use plan infos without execs removed
tgravescs May 13, 2022
e5c3551
output children node ids
tgravescs May 13, 2022
851b712
output stages info
tgravescs May 13, 2022
16d88c3
cleanup
tgravescs May 16, 2022
f391f28
fix running app
tgravescs May 16, 2022
66c02aa
fix stage header
tgravescs May 16, 2022
1fdd4ff
Start removing unneeded fields
tgravescs May 16, 2022
7b07645
Update summary table
tgravescs May 17, 2022
7f9ce84
cleanup
tgravescs May 17, 2022
f3747df
fix sorting
tgravescs May 17, 2022
0d12a73
update running app
tgravescs May 17, 2022
0da6523
update test
tgravescs May 17, 2022
e17f99b
fix missing
tgravescs May 17, 2022
6ff627e
fix more reporting to be based on supported execs
tgravescs May 18, 2022
d576e05
fixes
tgravescs May 18, 2022
0ed07c7
fix test
tgravescs May 18, 2022
d4b30a0
fix event processor calling base
tgravescs May 18, 2022
cec6671
fix df duration
tgravescs May 18, 2022
b86debd
debug
tgravescs May 18, 2022
cc1c7ca
debug
tgravescs May 18, 2022
beecfe1
fix double and int
tgravescs May 18, 2022
9ee8245
fix double
tgravescs May 18, 2022
ce1fe51
Merge remote-tracking branch 'origin/branch-22.06' into qualStageMetrics
tgravescs May 18, 2022
2fa41d7
fxi merge
tgravescs May 18, 2022
ab7a490
fix double
tgravescs May 18, 2022
f9e9869
fix divide 0
tgravescs May 18, 2022
2d5ac8a
fix double to 2 precision
tgravescs May 18, 2022
cc9cdc1
fix formatting output
tgravescs May 18, 2022
6935f83
fix sorting
tgravescs May 18, 2022
6ef010f
fix Running
tgravescs May 18, 2022
30bf186
move around sorting
tgravescs May 18, 2022
cc1686e
remove logWarnings
tgravescs May 18, 2022
dad9610
update sorting
tgravescs May 18, 2022
4c25dc5
Add appId to execs report
tgravescs May 18, 2022
56c0f72
update sxtages output
tgravescs May 18, 2022
4539f1e
remove unused imports
tgravescs May 18, 2022
56a5527
fix running app
tgravescs May 18, 2022
43d4a4e
update tests
tgravescs May 18, 2022
8e61126
fix sorting
tgravescs May 18, 2022
cae9209
add estimated into to summary info
tgravescs May 18, 2022
7da0719
fix running
tgravescs May 18, 2022
56bb07b
try using enum
tgravescs May 18, 2022
493a5af
fix recommendation to string
tgravescs May 18, 2022
4d55c27
update to use recommended/strongly recommended
tgravescs May 18, 2022
a8776e1
fix ecommendation
tgravescs May 18, 2022
9d4765b
fix divide 0
tgravescs May 18, 2022
5afce2c
fix opportunity
tgravescs May 18, 2022
25d4c0b
fix up df task duration
tgravescs May 18, 2022
e9cc761
debug
tgravescs May 18, 2022
ae3be31
fix bug with estimated in csv
tgravescs May 18, 2022
b25f88a
rearrange codce
tgravescs May 18, 2022
a832316
cleanup
tgravescs May 18, 2022
32f0545
cleanup and start handling failures
tgravescs May 18, 2022
152a01c
handle failures and cleanup
tgravescs May 19, 2022
13f42ba
fix output
tgravescs May 19, 2022
36a3e0f
change sorting
tgravescs May 19, 2022
89d70fa
fixies
tgravescs May 19, 2022
2d5303c
handle test having udf
tgravescs May 19, 2022
b8ab8cd
change speedup of the *InPandas and arrow eval
tgravescs May 19, 2022
ef25228
fix test
tgravescs May 19, 2022
96032d3
fix ui after changing field names
amahussein May 19, 2022
9c9f825
make ExecInfo regular class
tgravescs May 19, 2022
cf9aad2
Merge pull request #5 from amahussein/qualStageMetrics-ui-check
tgravescs May 19, 2022
1554564
fix commented out
tgravescs May 19, 2022
0268e34
fix more execinfo
tgravescs May 19, 2022
7c8e6a7
update test schema
tgravescs May 19, 2022
40dc9a7
change what goes to DF
tgravescs May 19, 2022
fc980a1
move to outer class
tgravescs May 19, 2022
727eae5
fix schema
tgravescs May 19, 2022
99f7115
fix limit option
tgravescs May 19, 2022
fdf2af0
remove extra header csv
tgravescs May 19, 2022
b2540aa
match up test with csv
tgravescs May 19, 2022
6b4f7b8
Fix not supported read formats
tgravescs May 19, 2022
8f8a54f
update results
tgravescs May 19, 2022
8c19833
2 places for average speedup
tgravescs May 19, 2022
4c1a267
Merge branch 'qualStageMetrics' of github.com:tgravescs/spark-rapids …
tgravescs May 19, 2022
5e88b53
update results
tgravescs May 19, 2022
9c741ae
update results
tgravescs May 19, 2022
273754e
comment out tests
tgravescs May 19, 2022
826aca1
update test
tgravescs May 19, 2022
8ecf8b8
update operator scores
tgravescs May 19, 2022
992296c
cleanup
tgravescs May 19, 2022
7fcd8f8
fix test hang
tgravescs May 23, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2221,7 +2221,13 @@ object SupportedOpsForTools {
("FilterExec", "2.4"),
("HashAggregateExec", "3.4"),
("SortExec", "6.0"),
("SortMergeJoinExec", "14.9"))
("SortMergeJoinExec", "14.9"),
("ArrowEvalPythonExec", "1.2"),
("AggregateInPandasExec", "1.2"),
("FlatMapGroupsInPandasExec", "1.2"),
("MapInPandasExec", "1.2"),
("WindowInPandasExec", "1.2")
)
GpuOverrides.execs.values.toSeq.sortBy(_.tag.toString).foreach { rule =>
val checks = rule.getChecks
if (rule.isVisible && checks.forall(_.shown)) {
Expand Down
10 changes: 5 additions & 5 deletions tools/src/main/resources/operatorsScore.csv
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ BroadcastNestedLoopJoinExec,2.0
CartesianProductExec,2.0
ShuffledHashJoinExec,2.0
SortMergeJoinExec,14.9
AggregateInPandasExec,2.0
ArrowEvalPythonExec,2.0
FlatMapGroupsInPandasExec,2.0
MapInPandasExec,2.0
WindowInPandasExec,2.0
AggregateInPandasExec,1.2
ArrowEvalPythonExec,1.2
FlatMapGroupsInPandasExec,1.2
MapInPandasExec,1.2
WindowInPandasExec,1.2
WindowExec,2.0
Abs,3
Acos,3
Expand Down
16 changes: 6 additions & 10 deletions tools/src/main/resources/ui/html/raw.html
Original file line number Diff line number Diff line change
Expand Up @@ -168,21 +168,17 @@ <h1 class="dash-title">Full Report</h1>
<th><span data-toggle="tooltip" data-placement="top"
title="This is an estimate at how much time the tasks spent doing processing on the CPU vs waiting on IO. Shaded red when it is below 40%">
Executor CPU Time Percent</span></th>
<th>SQL Duration with Potential Problems</th>
<th>Estimated GPU Duration</th>
<th>Unsupported Task Duration</th>
<th>Speed-up Duration</th>
<th>Speed-up Factor</th>
<th>Speed-up Bucket</th>
<th>Longest SqlDuration</th>
<th>SQL Ids with Failures</th>
<th>Read Score Percent</th>
<th>Read File Format Score</th>
<th>Unsupported Read File Formats and Types</th>
<th>Write Data Format</th>
<th>Complex Types</th>
<th>Nested Complex Types</th>
<th>Estimated Duration</th>
<th>Unsupported Duration</th>
<th>Speed-up Duration</th>
<th>Speed-up Factor</th>
<th>Total Speed-up</th>
<th>Speed-up Bucket</th>
<th>Longest SqlDuration</th>
</tr>
</thead>
</table>
Expand Down
7 changes: 6 additions & 1 deletion tools/src/main/resources/ui/js/qual-report.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ function getExpandedAppDetails(rowData) {
' <td> {{durationCollection.accelerationOpportunity}} </td>' +
' <td> ' + toolTipsValues.gpuRecommendations.details.gpuOpportunity + '</td>' +
' </tr>' +
' <tr>' +
' <th scope=\"row\">GPU Time Saved</th>' +
' <td> {{durationCollection.accelerationOpportunity}} </td>' +
' <td> ' + toolTipsValues.gpuRecommendations.details.gpuTimeSaved + '</td>' +
' </tr>' +
' </tbody>' +
'</table>';

Expand Down Expand Up @@ -161,7 +166,7 @@ $(document).ready(function(){
},
{
name: 'appDuration',
data: 'appDuration',
data: 'estimatedInfo.appDur',
type: 'numeric',
searchable: false,
render: function (data, type, row) {
Expand Down
44 changes: 20 additions & 24 deletions tools/src/main/resources/ui/js/raw-report.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

$(document).ready(function() {
let attemptArray = processRawData(qualificationRecords);
let totalSpeedupColumnName = "totalSpeedup"
let sortColumnForGPURecommend = totalSpeedupColumnName
let rawDataTableConf = {
// TODO: To use horizontal scroll for wide table
//"scrollX": true,
Expand Down Expand Up @@ -72,7 +74,7 @@ $(document).ready(function() {
return data;
},
fnCreatedCell: (nTd, sData, oData, _ignored_iRow, _ignored_iCol) => {
if (oData.estimated) {
if (oData.endDurationEstimated) {
$(nTd).css('color', 'blue');
}
}
Expand All @@ -88,45 +90,37 @@ $(document).ready(function() {
}
},
{
data: "sqlDurationForProblematic",
searchable: false,
},
{data: "failedSQLIds"},
{data: "readScorePercent"},
{data: "readFileFormatScore"},
{data: "readFileFormatAndTypesNotSupported"},
{
data: "writeDataFormat",
orderable: false,
data: "durationCollection.estimatedDurationWallClock",
},
{
data: "complexTypes",
orderable: false,
data: "unsupportedTaskDuration",
},
{
data: "nestedComplexTypes",
orderable: false,
data: "estimatedInfo.gpuOpportunity",
},
{
data: "estimatedDuration",
name: "totalSpeedup",
data: "estimatedInfo.estimatedGpuSpeedup",
},
{
data: "unsupportedDuration",
data: "gpuCategory",
},
{
data: "speedupDuration",
},
{
data: "speedupFactor",
data: "longestSqlDuration",
},
{data: "failedSQLIds"},
{data: "readFileFormatAndTypesNotSupported"},
{
data: "totalSpeedup",
data: "writeDataFormat",
orderable: false,
},
{
data: "speedupBucket",
data: "complexTypes",
orderable: false,
},
{
data: "longestSqlDuration",
data: "nestedComplexTypes",
orderable: false,
}
],
// dom: "<'row'<'col-sm-12 col-md-6'B><'col-sm-12 col-md-6'>>" +
Expand All @@ -139,6 +133,8 @@ $(document).ready(function() {
text: 'Export'
}]
};
rawDataTableConf.order =
[[getColumnIndex(rawDataTableConf.columns, sortColumnForGPURecommend), "desc"]];
var rawAppsTable = $('#all-apps-raw-data-table').DataTable(rawDataTableConf);
$('#all-apps-raw-data [data-toggle="tooltip"]').tooltip();

Expand Down
5 changes: 3 additions & 2 deletions tools/src/main/resources/ui/js/ui-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ let toolTipsValues = {
"speedupDuration": "Duration of SQL operations that are supported on GPU. It is calculated as (sqlDuration - unsupportedDuration)",
"unsupportedDuration": "An estimate total duration of SQL operations that are not supported on GPU",
"sqlDFDuration": "Time duration that includes only SQL-Dataframe queries.",
"gpuOpportunity": "Wall-Clock time that shows how much of the SQL duration can be speed-up on the GPU."
"gpuOpportunity": "Wall-Clock time that shows how much of the SQL duration can be speed-up on the GPU.",
"gpuTimeSaved": "Estimated Wall-Clock time saved if it was run on the GPU"
}
}
}
Expand All @@ -83,7 +84,7 @@ let UIConfig = {
"dataProcessing": {
// name of the column used to decide on the category of the app
// total SpeedUp is a factor between 1.0 and 10.0
"gpuRecommendation.appColumn": "totalSpeedup",
"gpuRecommendation.appColumn": "estimatedInfo.estimatedGpuSpeedup",
// when set to true, the JS will generate random value for recommendations
"simulateRecommendation": false
},
Expand Down
77 changes: 42 additions & 35 deletions tools/src/main/resources/ui/js/uiutils.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ class GpuRecommendationCategory {
// Method
isGroupOf(row) {
return row.gpuRecommendation >= this.range.low
&& row.gpuRecommendation < this.range.high;
&& row.gpuRecommendation < this.range.high;
}

toggleCollapsed() {
Expand All @@ -154,7 +154,6 @@ let recommendationContainer = [
"badge badge-pill badge-not-recommended"),
];


function createRecommendationGroups(recommendationsArr) {
let map = new Map()
recommendationsArr.forEach(object => {
Expand All @@ -167,22 +166,13 @@ let recommendationsMap = new Map(createRecommendationGroups(recommendationContai

let sparkUsers = new Map();


/* define constants for the tables configurations */
let defaultPageLength = 20;
let defaultLengthMenu = [[20, 40, 60, 100, -1], [20, 40, 60, 100, "All"]];

let appFieldAccCriterion = UIConfig.dataProcessing["gpuRecommendation.appColumn"];
let simulateRecommendationEnabled = UIConfig.dataProcessing["simulateRecommendation"];

function simulateGPURecommendations(appsArray, maxScore) {
for (let i in appsArray) {
appsArray[i]["gpuRecommendation"] =
simulateRecommendationEnabled ? getRandomIntInclusive(1, 10)
: appsArray[i][appFieldAccCriterion];
}
}

// bind the raw data top the GPU recommendations
function setGPURecommendations(appsArray) {
for (let i in appsArray) {
Expand All @@ -199,8 +189,7 @@ function setAppInfoRecord(appRecord) {
// which maps into wallclock time that shows how much of the SQL duration we think we can
// speed up on the GPU
function calculateAccOpportunityAsDuration(appRec) {
let ratio = (appRec["speedupDuration"] * 1.0) / appRec["sqlDataframeTaskDuration"];
return appRec["sqlDataFrameDuration"] * ratio;
return appRec.estimatedInfo.gpuOpportunity;
}

function setAppTaskDuration(appRec) {
Expand All @@ -211,52 +200,70 @@ function setAppTaskDuration(appRec) {
}

function calculateAccOpportunity(appRec) {
return (appRec["speedupDuration"] * 100.0) / appRec["appTaskDuration"];
return appRec.estimatedInfo.gpuOpportunity;
}

// Quick workaround to map names generated by scala to the name in UI
function mapFieldsToUI(rawAppRecord) {
rawAppRecord["speedupDuration"] = rawAppRecord["speedupOpportunity"]
rawAppRecord["cpuPercent"] = rawAppRecord["executorCPUPercent"];
// set default longestSqlDuration for backward compatibility
if (!rawAppRecord.hasOwnProperty("longestSqlDuration")) {
rawAppRecord["longestSqlDuration"] = 0;
}
// Note that appFieldAccCriterion variable does not work anymore after
// the fields became hierarchical
rawAppRecord["gpuRecommendation"] =
simulateRecommendationEnabled ? getRandomIntInclusive(1, 10)
: parseFloat(rawAppRecord.estimatedInfo.estimatedGpuSpeedup);
rawAppRecord["estimatedGPUDuration"] = parseFloat(rawAppRecord.estimatedInfo.estimatedGpuDur);
rawAppRecord["totalSpeedup"] = rawAppRecord.estimatedInfo.estimatedGpuSpeedup;
rawAppRecord["appDuration"] = rawAppRecord.estimatedInfo.appDur;
rawAppRecord["sqlDataFrameDuration"] = rawAppRecord.estimatedInfo.sqlDfDuration;
rawAppRecord["accelerationOpportunity"] = calculateAccOpportunity(rawAppRecord);
rawAppRecord["unsupportedTaskDuration"] = rawAppRecord["unsupportedSQLTaskDuration"];

}

function processRawData(rawRecords) {
let processedRecords = [];
let maxOpportunity = 0;
for (let i in rawRecords) {
let appRecord = JSON.parse(JSON.stringify(rawRecords[i]));
appRecord["estimated"] = appRecord["appDurationEstimated"];
appRecord["cpuPercent"] = appRecord["executorCPUPercent"];
// set default longestSqlDuration for backward compatibility
if (!appRecord.hasOwnProperty("longestSqlDuration")) {
appRecord["longestSqlDuration"] = 0;
}
mapFieldsToUI(appRecord)

appRecord["durationCollection"] = {
"appDuration": formatDuration(appRecord["appDuration"]),
"sqlDFDuration": formatDuration(appRecord["sqlDataFrameDuration"]),
"sqlDFTaskDuration": formatDuration(appRecord["sqlDataframeTaskDuration"]),
"sqlDurationProblems": formatDuration(appRecord["sqlDurationForProblematic"]),
"nonSqlTaskDurationAndOverhead": formatDuration(appRecord["nonSqlTaskDurationAndOverhead"]),
"estimatedDuration": formatDuration(appRecord["estimatedDuration"]),
"estimatedGPUDuration": formatDuration(appRecord["estimatedGPUDuration"]),
"estimatedDurationWallClock":
formatDuration((appRecord["appDuration"] * 1.0) / appRecord["totalSpeedup"]),
formatDuration(appRecord.estimatedInfo.estimatedGpuDur),
"accelerationOpportunity": formatDuration(calculateAccOpportunityAsDuration(appRecord)),
"unsupportedDuration": formatDuration(appRecord["unsupportedDuration"]),
"speedupDuration": formatDuration(appRecord["speedupDuration"]),
"longestSqlDuration": formatDuration(appRecord["longestSqlDuration"]),
"gpuTimeSaved": formatDuration(appRecord.estimatedInfo.estimatedGpuTimeSaved),
}

appRecord["totalSpeedup_display"] =
parseFloat(appRecord["totalSpeedup"]).toFixed(1);
setAppInfoRecord(appRecord);
maxOpportunity =
(maxOpportunity < appRecord[appFieldAccCriterion])
? appRecord[appFieldAccCriterion] : maxOpportunity;
(maxOpportunity < appRecord["gpuRecommendation"])
? appRecord["gpuRecommendation"] : maxOpportunity;
if (UIConfig.fullAppView.enabled) {
appRecord["attemptDetailsURL"] = "application.html?app_id=" + appRecord.appId;
} else {
appRecord["attemptDetailsURL"] = "#!"
}

setAppTaskDuration(appRecord);
appRecord["accelerationOpportunity"] = calculateAccOpportunity(appRecord);

processedRecords.push(appRecord)
}
simulateGPURecommendations(processedRecords, maxOpportunity);
setGPURecommendations(processedRecords);
setGlobalReportSummary(processedRecords);
return processedRecords;
Expand All @@ -282,30 +289,30 @@ function setGlobalReportSummary(processedApps) {
let recommendedCnt = 0;
let tlcCount = 0;
let totalDurations = 0;
let totalSqlDataframeTaskDuration = 0;
let totalSqlDataframeDuration = 0;
// only count apps that are recommended
let totalSpeedUpDurations = 0;
let totalGPUOpportunityDurations = 0;
for (let i in processedApps) {
// check if completedTime is estimated
if (processedApps[i]["estimated"]) {
if (processedApps[i]["endDurationEstimated"]) {
totalEstimatedApps += 1;
}
totalDurations += processedApps[i].appDuration;
totalSqlDataframeTaskDuration += processedApps[i].sqlDataframeTaskDuration;
totalSqlDataframeDuration += processedApps[i].sqlDataFrameDuration;
// check if the app is recommended or needs more information
let recommendedGroup = recommendationsMap.get(processedApps[i]["gpuCategory"])
if (recommendedGroup.id < "C") {
// this is a recommended app
// aggregate for GPU recommendation box
recommendedCnt += 1;
totalSpeedUpDurations += processedApps[i]["speedupDuration"]
totalGPUOpportunityDurations += processedApps[i]["accelerationOpportunity"]
} else {
if (recommendedGroup.id === "D") {
tlcCount += 1;
}
}

}

let estimatedPercentage = 0.0;
let gpuPercent = 0.0;
let tlcPercent = 0.0;
Expand All @@ -318,15 +325,15 @@ function setGlobalReportSummary(processedApps) {
gpuPercent = (100.0 * recommendedCnt) / processedApps.length;
// percent of apps missing information
tlcPercent = (100.0 * tlcCount) / processedApps.length;
speedUpPercent = (100.0 * totalSpeedUpDurations) / totalSqlDataframeTaskDuration;
speedUpPercent = (100.0 * totalGPUOpportunityDurations) / totalSqlDataframeDuration;
}
qualReportSummary.totalApps.numeric = processedApps.length;
qualReportSummary.totalApps.totalAppsDurations = formatDuration(totalDurations);
// speedups
qualReportSummary.speedups.numeric =
formatDuration(totalSpeedUpDurations);
formatDuration(totalGPUOpportunityDurations);
qualReportSummary.speedups.totalSqlDataframeTaskDuration =
formatDuration(totalSqlDataframeTaskDuration);
formatDuration(totalSqlDataframeDuration);
qualReportSummary.speedups.statsPercentage = twoDecimalFormatter.format(speedUpPercent)
+ qualReportSummary.speedups.statsPercentage;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ object EventLogPathProcessor extends Logging {
}

// Databricks has the latest events in file named eventlog and then any rolled in format
// eventlog-2021-06-14--20-00.gz, here we assume that is any files start with eventlog
// eventlog-2021-06-14--20-00.gz, here we assume that if any files start with eventlog
// then the directory is a Databricks event log directory.
def isDatabricksEventLogDir(dir: FileStatus, fs: FileSystem): Boolean = {
val dbLogFiles = fs.listStatus(dir.getPath, new PathFilter {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@ case class AggregateInPandasExecParser(
(1.0, false)
}
// TODO - add in parsing expressions - average speedup across?
ExecInfo(sqlID, node.name, "", speedupFactor, duration, node.id, isSupported, None)
new ExecInfo(sqlID, node.name, "", speedupFactor, duration, node.id, isSupported, None)
}
}
Loading