@VisibleForTesting static PartitionKey partitionKeyForTime(long time) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(time); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; // otherwise January would be 0 int day = calendar.get(Calendar.DAY_OF_MONTH); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); return PartitionKey.builder() .addIntField(FIELD_YEAR, year) .addIntField(FIELD_MONTH, month) .addIntField(FIELD_DAY, day) .addIntField(FIELD_HOUR, hour) .addIntField(FIELD_MINUTE, minute) .build(); }
@VisibleForTesting static PartitionKey partitionKeyForTime(long time) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(time); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; // otherwise January would be 0 int day = calendar.get(Calendar.DAY_OF_MONTH); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); return PartitionKey.builder() .addIntField(FIELD_YEAR, year) .addIntField(FIELD_MONTH, month) .addIntField(FIELD_DAY, day) .addIntField(FIELD_HOUR, hour) .addIntField(FIELD_MINUTE, minute) .build(); }
@Nullable @Override public PartitionKey.Builder apply(@Nullable PartitionKey.Builder builder) { return builder.addIntField("z", 1); } });
PartitionKey key = PartitionKey.builder() .addStringField("partition", partition) .addIntField("sub-partition", subPartition) .build();
@Test public void testBuilderGetter() { PartitionKey key = PartitionKey.builder() .addField("a", "value") .addField("b", 1L) .addField("c", -17) .addField("d", true) .addIntField("e", 42) .addLongField("f", 15) .addStringField("g", "ghijk") .build(); Assert.assertEquals("value", key.getField("a")); Assert.assertEquals(1L, key.getField("b")); Assert.assertEquals(-17, key.getField("c")); Assert.assertEquals(true, key.getField("d")); Assert.assertEquals(42, key.getField("e")); Assert.assertEquals(15L, key.getField("f")); Assert.assertEquals("ghijk", key.getField("g")); }
@GET @Path("partitions/{partition}/subpartitions/{sub-partition}") public void read(HttpServiceRequest request, HttpServiceResponder responder, @PathParam("partition") String partition, @PathParam("sub-partition") int subPartition) { PartitionDetail partitionDetail = pfs.getPartition(PartitionKey.builder() .addStringField("partition", partition) .addIntField("sub-partition", subPartition) .build()); if (partitionDetail == null) { responder.sendString(404, "Partition not found.", Charsets.UTF_8); return; } try { responder.send(200, partitionDetail.getLocation().append("file"), "text/plain"); } catch (IOException e) { responder.sendError(400, String.format("Unable to read path '%s'", partitionDetail.getRelativePath())); } }
@Override public void apply() throws Exception { PartitionKey partitionKey = PartitionKey.builder() .addIntField("i", 42) .addLongField("l", 17L) .addStringField("s", "x") .build(); ImmutableMap<String, String> metadata = ImmutableMap.of("key1", "value", "key2", "value2", "key3", "value2"); PartitionOutput partitionOutput = dataset.getPartitionOutput(partitionKey); partitionOutput.setMetadata(metadata); partitionOutput.addPartition(); PartitionDetail partitionDetail = dataset.getPartition(partitionKey); Assert.assertNotNull(partitionDetail); Assert.assertEquals(metadata, partitionDetail.getMetadata().asMap()); } });
@DELETE @Path("partitions/{partition}/subpartitions/{sub-partition}") public void drop(HttpServiceRequest request, HttpServiceResponder responder, @PathParam("partition") String partition, @PathParam("sub-partition") int subPartition) { PartitionKey key = PartitionKey.builder() .addStringField("partition", partition) .addIntField("sub-partition", subPartition) .build(); if (pfs.getPartition(key) == null) { responder.sendString(404, "Partition not found.", Charsets.UTF_8); return; } pfs.dropPartition(key); responder.sendString(200, "Successfully dropped partition", Charsets.UTF_8); } }
@Test(expected = IllegalArgumentException.class) public void testBuilderEmptyField() { PartitionKey.builder().addIntField("", 1).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuilderNullField() { PartitionKey.builder().addIntField(null, 1).build(); }
@Nullable @Override public PartitionKey.Builder apply(@Nullable PartitionKey.Builder builder) { return builder.addIntField("y", 1); } });
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", counter++) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); }
@Test public void testSetGetOutputPartitionKey() throws Exception { Map<String, String> arguments = new HashMap<>(); PartitionKey key = PartitionKey.builder() .addIntField("i", 42) .addLongField("l", 17L) .addStringField("s", "x") .build(); PartitionedFileSetArguments.setOutputPartitionKey(arguments, key); Assert.assertEquals(key, PartitionedFileSetArguments.getOutputPartitionKey(arguments, PARTITIONING)); }
@Test(expected = IllegalArgumentException.class) public void testEncodeIncompleteKey() { PartitionKey key = PartitionKey.builder() .addIntField("i", 42) .addStringField("s", "x") .build(); PartitionedFileSetDataset.generateRowKey(key, PARTITIONING_1); }
@Override public PartitionKey getPartitionKey(String key, String value) { return PartitionKey.builder().addIntField("number", Integer.parseInt(key.substring(0, 1))).build(); } }
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", counter++) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); }
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", counter++) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); } }
private void publishNotification(TopicId topicId, NamespaceId namespaceId, String dataset) throws Exception { DatasetId datasetId = namespaceId.dataset(dataset); PartitionKey partitionKey = PartitionKey.builder().addIntField("part1", 1).build(); Notification notification = Notification.forPartitions(datasetId, ImmutableList.of(partitionKey)); messagingService.publish(StoreRequestBuilder.of(topicId).addPayload(GSON.toJson(notification)).build()); }
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", 1) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); } }
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", counter++) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); } }