Spark 正在将分区键上的排序操作添加到查询计划中。这会减慢构建速度,增加内存使用量并导致磁盘溢出。我确信这是一种新的行为,尽管我无法……
Spark 正在将分区键上的排序操作添加到查询计划中。
这会减慢构建速度,增加内存使用量并导致磁盘溢出。
我确信这是一种新的行为,尽管我无法验证,因为旧版本的火花详细信息不再可用。
写入逻辑:
df = df.repartition('date')
tgt.write_dataframe(df, partition_cols=['date'])
逻辑计划如下:
InsertIntoHadoopFsRelationCommand foundry://...
+- WriteFiles
+- Sort [date#337 ASC NULLS FIRST], false
+- Project ...
+- CollectMetrics ...
+- RepartitionByExpression [date#337]
+- Project ...
这些问题看起来可能相关,但它们应该在 Spark 3.4+ 中得到修复:
我相信直到最近我们的 Foundry 实例还在使用 Spark 3.2.1,但无论目标 Spark 版本是什么,运行时版本都已悄然更改为 Spark 3.4 和 3.5。
这种排序有必要吗?可以将其删除吗?
您可以创建一个 Viewmodel 来直接设置数据。它不需要将数据传递给后台代码。
public class VM : INotifyPropertyChanged
{
int num;
public int Num
{
get => num;
set
{
num = value;
OnPropertyChanged(nameof(num));
}
}
public VM()
{
num = 50;
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
然后,您可以为 ContentPage 设置 bindingcontext
。由于获取或设置了 ValueIndicatorBase 后代的值,因此这是一个可绑定的属性。继承自 ValueIndicatorBase。因此,您可以将 Num 绑定到该值。
<ContentPage.BindingContext>
<ViewModel:VM/>
</ContentPage.BindingContext>
<dxga:MarkerIndicator Value="{Binding Num}"/>