public static TableUpdateArbitrator create(UpdateContext context) {
        String location = context.table.getTableLocation();
        URI uri = URI.create(location);
        String scheme = Optional.ofNullable(uri.getScheme()).orElse("").toUpperCase(Locale.ROOT);
        if (!SUPPORTED_SCHEMA.contains(scheme)) {
            return null;
        }
        Pair key = Pair.create(context.table.getType(), scheme);
        TableUpdateArbitrator arbitrator = Preconditions.checkNotNull(TRAITS_TABLE.get(key),
                String.format("table type:%s, schema:%s not supported in update arbitrator's traits",
                        context.table.getType(), uri.getScheme())).get();
        arbitrator.table = context.table;
        arbitrator.partitionLimit = context.partitionLimit;
        arbitrator.partitionNames = context.partitionNames;
        return arbitrator;
    }
@Test
    public void testHiveOnS3() {
        String location = "s3://bucket_name/lineorder_part";
        HiveTable hiveTable = createHiveTable(location);
        List<String> partitionNames = Lists.newArrayList();
        TableUpdateArbitrator.UpdateContext updateContext =
                new TableUpdateArbitrator.UpdateContext(hiveTable, -1, partitionNames);
        TableUpdateArbitrator arbitrator = TableUpdateArbitrator.create(updateContext);
        Assert.assertTrue(arbitrator instanceof ObjectBasedUpdateArbitrator);
    }