public KuduScanner createScanner(KuduSplit kuduSplit) { try { return KuduScanToken.deserializeIntoScanner(kuduSplit.getSerializedScanToken(), client); } catch (IOException e) { throw new RuntimeException(e); } }
public KuduScanner createScanner(KuduSplit kuduSplit) { try { return KuduScanToken.deserializeIntoScanner(kuduSplit.getSerializedScanToken(), client); } catch (IOException e) { throw new RuntimeException(e); } }
@Override public KuduScanner createScanner(KuduSplit kuduSplit) { try { KuduScanner scanner = KuduScanToken.deserializeIntoScanner(kuduSplit.getPb(), client); return scanner; } catch (IOException e) { throw new RuntimeException(e); } }
public KuduScanner scanner(byte[] token) throws IOException { return KuduScanToken.deserializeIntoScanner(token, client.syncClient()); }
KuduScanner aPartitionSpecificScanner = KuduScanToken.deserializeIntoScanner( kuduPartitionScanAssignmentMeta.getSerializedKuduScanToken(), kuduClientHandle); LOG.info("Scanning the following tablet " + KuduScanToken.stringifySerializedToken(kuduPartitionScanAssignmentMeta
@Override public void run() { try (KuduClient contextClient = new KuduClient.KuduClientBuilder(masterAddresses) .defaultAdminOperationTimeoutMs(operationTimeoutMs) .build()) { KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serializedToken, contextClient); try { int localCount = 0; while (scanner.hasMoreRows()) { localCount += Iterators.size(scanner.nextRows()); } count.addAndGet(localCount); } finally { scanner.close(); } } catch (Exception e) { LOG.error("exception in parallel token scanner", e); } } });
@Test(timeout = 100000) public void testScanTokenReadMode() throws Exception { ScanTokenPB.Builder pbBuilder = ScanTokenPB.newBuilder(); pbBuilder.setTableName(table.getName()); pbBuilder.setReadMode(Common.ReadMode.READ_YOUR_WRITES); Client.ScanTokenPB scanTokenPB = pbBuilder.build(); final byte[] serializedToken = KuduScanToken.serialize(scanTokenPB); // Deserialize scan tokens and make sure the read mode is updated accordingly. KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serializedToken, client); assertEquals(AsyncKuduScanner.ReadMode.READ_YOUR_WRITES, scanner.getReadMode()); }
/** Test that scanRequestTimeout makes it from the scan token to the underlying Scanner class. */ @Test public void testScanRequestTimeout() throws IOException { final int NUM_ROWS_DESIRED = 100; final int SCAN_REQUEST_TIMEOUT_MS = 20; KuduTable table = createDefaultTable(client, testTableName); loadDefaultTable(client, testTableName, NUM_ROWS_DESIRED); KuduScanToken.KuduScanTokenBuilder builder = new KuduScanToken.KuduScanTokenBuilder(asyncClient, table); builder.scanRequestTimeout(SCAN_REQUEST_TIMEOUT_MS); List<KuduScanToken> tokens = builder.build(); for (KuduScanToken token : tokens) { byte[] serialized = token.serialize(); KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serialized, client); assertEquals(SCAN_REQUEST_TIMEOUT_MS, scanner.getScanRequestTimeout()); } } }
@Test(timeout = 100000) public void testScanTokenReplicaSelections() throws Exception { ScanTokenPB.Builder pbBuilder = ScanTokenPB.newBuilder(); pbBuilder.setTableName(table.getName()); pbBuilder.setReplicaSelection(Common.ReplicaSelection.CLOSEST_REPLICA); Client.ScanTokenPB scanTokenPB = pbBuilder.build(); final byte[] serializedToken = KuduScanToken.serialize(scanTokenPB); // Deserialize the scan token into a scanner, and make sure it is using // 'CLOSEST_REPLICA' selection policy. KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serializedToken, client); assertEquals(ReplicaSelection.CLOSEST_REPLICA, scanner.getReplicaSelection()); assertEquals(9, countRowsInScan(scanner)); }
@Test(timeout = 100000) public void testScanTokenPropagatesTimestamp() throws Exception { // Initially, the client does not have the timestamp set. assertEquals(AsyncKuduClient.NO_TIMESTAMP, asyncClient.getLastPropagatedTimestamp()); assertEquals(KuduClient.NO_TIMESTAMP, client.getLastPropagatedTimestamp()); AsyncKuduScanner scanner = asyncClient.newScannerBuilder(table).build(); KuduScanner syncScanner = new KuduScanner(scanner); // Let the client receive the propagated timestamp in the scanner response. syncScanner.nextRows().getNumRows(); final long tsPrev = asyncClient.getLastPropagatedTimestamp(); final long tsPropagated = tsPrev + 1000000; ScanTokenPB.Builder pbBuilder = ScanTokenPB.newBuilder(); pbBuilder.setTableName(table.getName()); pbBuilder.setPropagatedTimestamp(tsPropagated); Client.ScanTokenPB scanTokenPB = pbBuilder.build(); final byte[] serializedToken = KuduScanToken.serialize(scanTokenPB); // Deserialize scan tokens and make sure the client's last propagated // timestamp is updated accordingly. assertEquals(tsPrev, asyncClient.getLastPropagatedTimestamp()); KuduScanToken.deserializeIntoScanner(serializedToken, client); assertEquals(tsPropagated, asyncClient.getLastPropagatedTimestamp()); }