Java源码示例:com.facebook.presto.spi.predicate.TupleDomain
示例1
@Override
public ConnectorSplitSource getSplits(
ConnectorTransactionHandle transactionHandle,
ConnectorSession session,
ConnectorTableLayoutHandle layout,
SplitSchedulingContext splitSchedulingContext)
{
KubeTableLayoutHandle layoutHandle = (KubeTableLayoutHandle) layout;
KubeTableHandle tableHandle = layoutHandle.getTable();
TupleDomain<KubeColumnHandle> effectivePredicate = layoutHandle.getConstraint()
.transform(KubeColumnHandle.class::cast);
List<ConnectorSplit> splits = nodeManager.getAllNodes().stream()
.map(node -> new KubeSplit(node.getHostAndPort(), tableHandle.getSchemaTableName(), effectivePredicate))
.collect(Collectors.toList());
return new FixedSplitSource(splits);
}
示例2
/**
* Gets a list of {@link HbaseColumnConstraint} based on the given constraint ID, excluding the row ID column
*
* @param rowIdName Presto column name mapping to the Hbase row ID
* @param constraint Set of query constraints
* @return List of all column constraints
*/
private static List<HbaseColumnConstraint> getColumnConstraints(String rowIdName, TupleDomain<ColumnHandle> constraint)
{
ImmutableList.Builder<HbaseColumnConstraint> constraintBuilder = ImmutableList.builder();
for (TupleDomain.ColumnDomain<ColumnHandle> columnDomain : constraint.getColumnDomains().get()) {
HbaseColumnHandle columnHandle = (HbaseColumnHandle) columnDomain.getColumn();
if (!columnHandle.getName().equals(rowIdName)) {
// Family and qualifier will exist for non-row ID columns
constraintBuilder.add(new HbaseColumnConstraint(
columnHandle.getName(),
columnHandle.getFamily().get(),
columnHandle.getQualifier().get(),
Optional.of(columnDomain.getDomain()),
columnHandle.isIndexed()));
}
}
return constraintBuilder.build();
}
示例3
@JsonCreator
public ParaflowTableLayoutHandle(
@JsonProperty("table") ParaflowTableHandle table,
@JsonProperty("fiberColumn") ParaflowColumnHandle fiberColumn,
@JsonProperty("timestampColumn") ParaflowColumnHandle timestampColumn,
@JsonProperty("fiberPartitioner") String fiberPartitioner,
@JsonProperty("storageFormat") StorageFormat storageFormat,
@JsonProperty("predicates") Optional<TupleDomain<ColumnHandle>> predicates)
{
this.table = requireNonNull(table, "table is null");
this.fiberColumn = requireNonNull(fiberColumn, "fiberColumn is null");
this.timestampColumn = requireNonNull(timestampColumn, "timestampColumn is null");
this.fiberPartitioner = requireNonNull(fiberPartitioner, "fiberPartitioner is null");
this.storageFormat = requireNonNull(storageFormat, "storageFormat is null");
this.predicates = requireNonNull(predicates, "predicates is null");
}
示例4
@JsonCreator
public KubeTableLayoutHandle(
@JsonProperty("table") KubeTableHandle table,
@JsonProperty("constraint") TupleDomain<ColumnHandle> constraint)
{
this.table = requireNonNull(table, "table is null");
this.constraint = requireNonNull(constraint, "constraint is null");
}
示例5
@JsonCreator
public KubeSplit(
@JsonProperty("address") HostAddress address,
@JsonProperty("tableName") SchemaTableName tableName,
@JsonProperty("effectivePredicate") TupleDomain<KubeColumnHandle> effectivePredicate)
{
this.address = requireNonNull(address, "address is null");
this.tableName = requireNonNull(tableName, "tableName is null");
this.effectivePredicate = requireNonNull(effectivePredicate, "effectivePredicate is null");
}
示例6
public KubeRecordCursor(KubeTables kubeTables, List<KubeColumnHandle> columns, SchemaTableName tableName, HostAddress address, TupleDomain<KubeColumnHandle> predicate) {
this.columns = requireNonNull(columns, "columns is null");
this.address = requireNonNull(address, "address is null");
fieldToColumnName = new String[columns.size()];
fieldToColumnIndex = new int[columns.size()];
for (int i = 0; i < columns.size(); i++) {
KubeColumnHandle columnHandle = columns.get(i);
fieldToColumnIndex[i] = columnHandle.getOrdinalPosition();
fieldToColumnName[i] = columnHandle.getColumnName();
}
resources = kubeTables.getKubeCache().getCache(tableName).values().iterator();
}
示例7
@JsonCreator
public ElasticsearchTableLayoutHandle(
@JsonProperty("table") ElasticsearchTableHandle table,
@JsonProperty("constraint") TupleDomain<ColumnHandle> constraint)
{
this.table = requireNonNull(table, "table is null");
this.constraint = requireNonNull(constraint, "constraint is null");
}
示例8
private static Optional<Domain> getRangeDomain(String rowIdName, TupleDomain<ColumnHandle> constraint)
{
if (constraint.getColumnDomains().isPresent()) {
for (TupleDomain.ColumnDomain<ColumnHandle> cd : constraint.getColumnDomains().get()) {
HbaseColumnHandle col = (HbaseColumnHandle) cd.getColumn();
if (col.getName().equals(rowIdName)) {
return Optional.of(cd.getDomain());
}
}
}
return Optional.empty();
}
示例9
@JsonCreator
public HbaseTableLayoutHandle(
@JsonProperty("table") HbaseTableHandle table,
@JsonProperty("constraint") TupleDomain<ColumnHandle> constraint)
{
this.table = requireNonNull(table, "table is null");
this.constraint = requireNonNull(constraint, "constraint is null");
}
示例10
@JsonCreator
public KuduTableLayoutHandle(@JsonProperty("tableHandle") KuduTableHandle tableHandle,
@JsonProperty("constraintSummary") TupleDomain<ColumnHandle> constraintSummary,
@JsonProperty("desiredColumns") Optional<Set<ColumnHandle>> desiredColumns) {
this.tableHandle = requireNonNull(tableHandle, "table is null");
this.constraintSummary = constraintSummary;
this.desiredColumns = desiredColumns;
}
示例11
@JsonProperty
public TupleDomain<ColumnHandle> getConstraint()
{
return constraint;
}
示例12
@JsonProperty
public TupleDomain<KubeColumnHandle> getEffectivePredicate()
{
return effectivePredicate;
}
示例13
private static Map<String, String> getQueryDsl(TupleDomain<ColumnHandle> constraint)
{
final Map<String, Object> mergeDslMap = new HashMap<>();
Map<String, String> dslCacher = new HashMap<>();
if (constraint.getColumnDomains().isPresent()) {
for (TupleDomain.ColumnDomain<ColumnHandle> cd : constraint.getColumnDomains().get()) {
ElasticsearchColumnHandle column = (ElasticsearchColumnHandle) cd.getColumn();
String columnName = column.getName();
if ("_type".equals(columnName)) {
throw new UnsupportedOperationException("this _type filter have't support!");
}
else if (columnName.startsWith("_")) {
getRangesFromDomain(cd.getDomain()).forEach(range -> {
checkArgument(range.isSingleValue(), "dsl is must [=] demo where _dsl = \"..dsl string\"");
checkArgument(range.getType() instanceof VarcharType, "_dsl filter is not string");
String dsl = ((Slice) range.getSingleValue()).toStringUtf8();
dslCacher.put(columnName, dsl);
if (!"_dsl".equals(columnName)) {
dsl = dsl.replace(MatchQueryFunction.MATCH_COLUMN_SEP, columnName.substring(1));
}
addEsQueryFilter(mergeDslMap, dsl);
});
}
else {
getRangesFromDomain(cd.getDomain()).forEach(range -> {
checkArgument(column.getType().equals(range.getType()), "filter type is " + range.getType() + " but column [" + columnName + "] type is " + column.getType());
QueryBuilder queryBuilder = getQueryBuilderFromPrestoRange(columnName, range);
addEsQueryFilter(mergeDslMap, queryBuilder.toString());
});
}
}
}
try {
String allDsl = mergeDslMap.isEmpty() ? QueryBuilders.boolQuery().toString() : MAPPER.writeValueAsString(mergeDslMap);
dslCacher.put("_allDsl", allDsl);
return dslCacher;
}
catch (JsonProcessingException e) {
throw new PrestoException(ES_DSL_ERROR, e);
}
}
示例14
private static Map<String, String> getQueryDsl(TupleDomain<ColumnHandle> constraint)
{
final Map<String, Object> mergeDslMap = new HashMap<>();
Map<String, String> dslCacher = new HashMap<>();
if (constraint.getColumnDomains().isPresent()) {
for (TupleDomain.ColumnDomain<ColumnHandle> cd : constraint.getColumnDomains().get()) {
ElasticsearchColumnHandle column = (ElasticsearchColumnHandle) cd.getColumn();
String columnName = column.getName();
if ("_type".equals(columnName)) {
throw new UnsupportedOperationException("this _type filter have't support!");
}
else if (columnName.startsWith("_")) {
getRangesFromDomain(cd.getDomain()).forEach(range -> {
checkArgument(range.isSingleValue(), "dsl is must [=] demo where _dsl = \"..dsl string\"");
checkArgument(range.getType() instanceof VarcharType, "_dsl filter is not string");
String dsl = ((Slice) range.getSingleValue()).toStringUtf8();
dslCacher.put(columnName, dsl);
if (!"_dsl".equals(columnName)) {
dsl = dsl.replace(MatchQueryFunction.MATCH_COLUMN_SEP, columnName.substring(1));
}
addEsQueryFilter(mergeDslMap, dsl);
});
}
else {
getRangesFromDomain(cd.getDomain()).forEach(range -> {
checkArgument(column.getType().equals(range.getType()), "filter type is " + range.getType() + " but column [" + columnName + "] type is " + column.getType());
QueryBuilder queryBuilder = getQueryBuilderFromPrestoRange(columnName, range);
addEsQueryFilter(mergeDslMap, queryBuilder.toString());
});
}
}
}
try {
String allDsl = mergeDslMap.isEmpty() ? QueryBuilders.boolQuery().toString() :
MAPPER.writeValueAsString(mergeDslMap.get("query")); //es5和 6开始只能返回 query的自节点
dslCacher.put("_allDsl", allDsl);
return dslCacher;
}
catch (JsonProcessingException e) {
throw new PrestoException(ES_DSL_ERROR, e);
}
}
示例15
@JsonProperty
public TupleDomain<ColumnHandle> getConstraint()
{
return constraint;
}
示例16
@JsonProperty
public TupleDomain<ColumnHandle> getConstraint()
{
return constraint;
}
示例17
private static Map<String, String> getQueryDsl(TupleDomain<ColumnHandle> constraint)
{
final Map<String, Object> mergeDslMap = new HashMap<>();
Map<String, String> dslCacher = new HashMap<>();
if (constraint.getColumnDomains().isPresent()) {
for (TupleDomain.ColumnDomain<ColumnHandle> cd : constraint.getColumnDomains().get()) {
ElasticsearchColumnHandle column = (ElasticsearchColumnHandle) cd.getColumn();
String columnName = column.getName();
if ("_type".equals(columnName)) {
throw new UnsupportedOperationException("this _type filter have't support!");
}
else if (columnName.startsWith("_")) {
getRangesFromDomain(cd.getDomain()).forEach(range -> {
checkArgument(range.isSingleValue(), "dsl is must [=] demo where _dsl = \"..dsl string\"");
checkArgument(range.getType() instanceof VarcharType, "_dsl filter is not string");
String dsl = ((Slice) range.getSingleValue()).toStringUtf8();
dslCacher.put(columnName, dsl);
if (!"_dsl".equals(columnName)) {
dsl = dsl.replace(MatchQueryFunction.MATCH_COLUMN_SEP, columnName.substring(1));
}
addEsQueryFilter(mergeDslMap, dsl);
});
}
else {
getRangesFromDomain(cd.getDomain()).forEach(range -> {
checkArgument(column.getType().equals(range.getType()), "filter type is " + range.getType() + " but column [" + columnName + "] type is " + column.getType());
QueryBuilder queryBuilder = getQueryBuilderFromPrestoRange(columnName, range);
addEsQueryFilter(mergeDslMap, queryBuilder.toString());
});
}
}
}
try {
String allDsl = mergeDslMap.isEmpty() ? QueryBuilders.boolQuery().toString() :
MAPPER.writeValueAsString(mergeDslMap.get("query")); //es5和 6开始只能返回 query的自节点
dslCacher.put("_allDsl", allDsl);
return dslCacher;
}
catch (JsonProcessingException e) {
throw new PrestoException(ES_DSL_ERROR, e);
}
}
示例18
@JsonProperty
public Optional<TupleDomain<ColumnHandle>> getPredicates()
{
return predicates;
}
示例19
public void setPredicates(Optional<TupleDomain<ColumnHandle>> predicates)
{
this.predicates = predicates;
}
示例20
@JsonProperty
public TupleDomain<ColumnHandle> getConstraintSummary() {
return constraintSummary;
}