Skip to content

Commit c27a559

Browse files
committed
[native] Add native session property binding to presto spark module
1 parent 43475f4 commit c27a559

File tree

3 files changed

+38
-10
lines changed

3 files changed

+38
-10
lines changed

presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkModule.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@
110110
import com.facebook.presto.server.security.PasswordAuthenticatorManager;
111111
import com.facebook.presto.server.security.PrestoAuthenticatorManager;
112112
import com.facebook.presto.server.security.SecurityConfig;
113+
import com.facebook.presto.sessionpropertyproviders.NativeWorkerSessionPropertyProvider;
113114
import com.facebook.presto.spark.accesscontrol.PrestoSparkAccessControlChecker;
114115
import com.facebook.presto.spark.accesscontrol.PrestoSparkAuthenticatorProvider;
115116
import com.facebook.presto.spark.accesscontrol.PrestoSparkCredentialsProvider;
@@ -146,6 +147,7 @@
146147
import com.facebook.presto.spi.relation.DomainTranslator;
147148
import com.facebook.presto.spi.relation.PredicateCompiler;
148149
import com.facebook.presto.spi.relation.VariableReferenceExpression;
150+
import com.facebook.presto.spi.session.WorkerSessionPropertyProvider;
149151
import com.facebook.presto.spiller.GenericPartitioningSpillerFactory;
150152
import com.facebook.presto.spiller.GenericSpillerFactory;
151153
import com.facebook.presto.spiller.NodeSpillConfig;
@@ -216,6 +218,7 @@
216218
import com.google.inject.Provides;
217219
import com.google.inject.Scopes;
218220
import com.google.inject.TypeLiteral;
221+
import com.google.inject.multibindings.MapBinder;
219222
import org.weakref.jmx.MBeanExporter;
220223
import org.weakref.jmx.testing.TestingMBeanServer;
221224

@@ -233,6 +236,7 @@
233236
import static com.facebook.airlift.json.JsonBinder.jsonBinder;
234237
import static com.facebook.airlift.json.JsonCodecBinder.jsonCodecBinder;
235238
import static com.facebook.airlift.json.smile.SmileCodecBinder.smileCodecBinder;
239+
import static com.google.inject.multibindings.MapBinder.newMapBinder;
236240
import static com.google.inject.multibindings.Multibinder.newSetBinder;
237241
import static com.google.inject.multibindings.OptionalBinder.newOptionalBinder;
238242
import static java.util.Objects.requireNonNull;
@@ -354,6 +358,14 @@ protected void setup(Binder binder)
354358
binder.bind(AnalyzePropertyManager.class).in(Scopes.SINGLETON);
355359
binder.bind(QuerySessionSupplier.class).in(Scopes.SINGLETON);
356360

361+
MapBinder<String, WorkerSessionPropertyProvider> mapBinder =
362+
newMapBinder(binder, String.class, WorkerSessionPropertyProvider.class);
363+
FeaturesConfig featuresConfig = buildConfigObject(FeaturesConfig.class);
364+
if (featuresConfig.isNativeExecutionEnabled()) {
365+
mapBinder.addBinding("native-worker").to(NativeWorkerSessionPropertyProvider.class)
366+
.in(Scopes.SINGLETON);
367+
}
368+
357369
// expression manager
358370
binder.bind(ExpressionOptimizerManager.class).in(Scopes.SINGLETON);
359371

presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkSessionPropertyManagerProvider.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@
1515

1616
import com.facebook.presto.SystemSessionProperties;
1717
import com.facebook.presto.metadata.SessionPropertyManager;
18+
import com.facebook.presto.spi.session.WorkerSessionPropertyProvider;
1819
import com.facebook.presto.spiller.NodeSpillConfig;
1920
import com.facebook.presto.sql.analyzer.JavaFeaturesConfig;
2021
import com.google.common.collect.Streams;
2122

2223
import javax.inject.Inject;
2324
import javax.inject.Provider;
2425

26+
import java.util.Map;
27+
2528
import static com.facebook.presto.metadata.SessionPropertyManager.createTestingSessionPropertyManager;
2629
import static com.google.common.collect.ImmutableList.toImmutableList;
2730
import static java.util.Objects.requireNonNull;
@@ -31,14 +34,24 @@ public class PrestoSparkSessionPropertyManagerProvider
3134
{
3235
private final SystemSessionProperties systemSessionProperties;
3336
private final PrestoSparkSessionProperties prestoSparkSessionProperties;
37+
private final Map<String, WorkerSessionPropertyProvider> workerSessionPropertyProviders;
3438
private final JavaFeaturesConfig javaFeaturesConfig;
3539
private final NodeSpillConfig nodeSpillConfig;
3640

3741
@Inject
38-
public PrestoSparkSessionPropertyManagerProvider(SystemSessionProperties systemSessionProperties, PrestoSparkSessionProperties prestoSparkSessionProperties, JavaFeaturesConfig javaFeaturesConfig, NodeSpillConfig nodeSpillConfig)
42+
public PrestoSparkSessionPropertyManagerProvider(
43+
SystemSessionProperties systemSessionProperties,
44+
PrestoSparkSessionProperties prestoSparkSessionProperties,
45+
Map<String, WorkerSessionPropertyProvider> workerSessionPropertyProviders,
46+
JavaFeaturesConfig javaFeaturesConfig,
47+
NodeSpillConfig nodeSpillConfig)
3948
{
40-
this.systemSessionProperties = requireNonNull(systemSessionProperties, "systemSessionProperties is null");
41-
this.prestoSparkSessionProperties = requireNonNull(prestoSparkSessionProperties, "prestoSparkSessionProperties is null");
49+
this.systemSessionProperties = requireNonNull(systemSessionProperties,
50+
"systemSessionProperties is null");
51+
this.prestoSparkSessionProperties = requireNonNull(prestoSparkSessionProperties,
52+
"prestoSparkSessionProperties is null");
53+
this.workerSessionPropertyProviders = requireNonNull(workerSessionPropertyProviders,
54+
"workerSessionPropertyProviders is null");
4255
this.javaFeaturesConfig = requireNonNull(javaFeaturesConfig, "javaFeaturesConfig is null");
4356
this.nodeSpillConfig = requireNonNull(nodeSpillConfig, "nodeSpillConfig is null");
4457
}
@@ -47,11 +60,13 @@ public PrestoSparkSessionPropertyManagerProvider(SystemSessionProperties systemS
4760
public SessionPropertyManager get()
4861
{
4962
return createTestingSessionPropertyManager(
50-
Streams.concat(
51-
systemSessionProperties.getSessionProperties().stream(),
52-
prestoSparkSessionProperties.getSessionProperties().stream()
53-
).collect(toImmutableList()),
54-
javaFeaturesConfig,
55-
nodeSpillConfig);
63+
Streams.concat(
64+
systemSessionProperties.getSessionProperties().stream(),
65+
prestoSparkSessionProperties.getSessionProperties().stream(),
66+
workerSessionPropertyProviders.values().stream()
67+
.flatMap(provider -> provider.getSessionProperties().stream())
68+
).collect(toImmutableList()),
69+
javaFeaturesConfig,
70+
nodeSpillConfig);
5671
}
5772
}

presto-spark-base/src/test/java/com/facebook/presto/spark/planner/optimizers/TestPickJoinSides.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353

5454
import java.util.Arrays;
5555
import java.util.Optional;
56+
import java.util.concurrent.ConcurrentHashMap;
5657

5758
import static com.facebook.presto.SystemSessionProperties.JOIN_MAX_BROADCAST_TABLE_SIZE;
5859
import static com.facebook.presto.SystemSessionProperties.TASK_CONCURRENCY;
@@ -89,7 +90,7 @@ public void setUp()
8990
tester = new RuleTester(
9091
ImmutableList.of(),
9192
ImmutableMap.of(),
92-
new PrestoSparkSessionPropertyManagerProvider(new SystemSessionProperties(), new PrestoSparkSessionProperties(), new JavaFeaturesConfig(), new NodeSpillConfig()).get(),
93+
new PrestoSparkSessionPropertyManagerProvider(new SystemSessionProperties(), new PrestoSparkSessionProperties(), new ConcurrentHashMap<>(), new JavaFeaturesConfig(), new NodeSpillConfig()).get(),
9394
Optional.of(NODES_COUNT),
9495
new TpchConnectorFactory(1));
9596
}

0 commit comments

Comments
 (0)