/// <summary> /// Converts the specified options to an XML document with /// filter options as embedded JSON. /// </summary> /// <param name="options">The options.</param> public string Convert(ScannerOptions options) { var xml = new XElement(_scannerName); if (!string.IsNullOrEmpty(options.StartRow)) { xml.Add(new XAttribute(_startRowName, _codec.Encode(options.StartRow))); } if (!string.IsNullOrEmpty(options.StopRow)) { xml.Add(new XAttribute(_stopRowName, _codec.Encode(options.StopRow))); } if (options.BatchSize.HasValue) { xml.Add(new XAttribute(_batchSizeName, options.BatchSize)); } if (options.Filter != null) { xml.Add(new XElement(_filterName) { Value = options.Filter.ConvertToJson(_codec).ToString() }); } return xml.ToString(); }
/// <summary> /// Builds a scanner creation URI. /// </summary> /// <param name="scannerOptions">Name of the table.</param> public string BuildScannerCreate(ScannerOptions scannerOptions) { if (scannerOptions == null || string.IsNullOrEmpty(scannerOptions.TableName)) { throw new ArgumentException(Resources.ResourceBuilder_MinimumForScannerNotMet); } return(new StringBuilder(scannerOptions.TableName).AppendFormat(_appendSegmentFormat, _scanner).ToString()); }
IScanner ProcessCreateScannerResponse(IRestResponse response, ScannerOptions options) { string scannerLocation = response.Headers.Where(header => header.Type == ParameterType.HttpHeader && header.Name == RestConstants.LocationHeader) .Select(header => header.Value.ToString()) .FirstOrDefault(); return(string.IsNullOrEmpty(scannerLocation) ? null : new Scanner(options.TableName, new Uri(scannerLocation).PathAndQuery.Trim('/'), this)); }
/// <summary> /// Creates the scanner. /// </summary> /// <param name="options">The options.</param> public virtual IScanner CreateScanner(ScannerOptions options) { string resource = ResourceBuilder.BuildScannerCreate(options); IRestResponse response = SendRequest(Method.PUT, resource, HBaseMimeTypes.Xml, content: ScannerConverter.Convert(options)); ErrorProvider.ThrowIfStatusMismatch(response, HttpStatusCode.Created); string scannerLocation = response.Headers.Where(header => header.Type == ParameterType.HttpHeader && header.Name == RestConstants.LocationHeader) .Select(header => header.Value.ToString()) .FirstOrDefault(); return(string.IsNullOrEmpty(scannerLocation) ? null : new Scanner(options.TableName, new Uri(scannerLocation).PathAndQuery.Trim('/'), this)); }
private static void DemonstrateScanning(IStargate stargate) { // scanning rows: var options = new ScannerOptions { TableName = "access-logs", StartRow = "elton|jericho|201510", StopRow = "elton|jericho|x", }; var scanner = stargate.CreateScanner(options); var totalUsage = 0; while (scanner.MoveNext()) { var cells = scanner.Current; foreach (var cell in cells) { totalUsage += int.Parse(cell.Value); } } Console.WriteLine("Sum from row scan: " + totalUsage); // scanning with a filter: options = new ScannerOptions { TableName = "access-logs", StartRow = "elton|jericho|201510", StopRow = "elton|jericho|x", Filter = new ColumnPrefixFilter("11") }; scanner = stargate.CreateScanner(options); totalUsage = 0; while (scanner.MoveNext()) { var cells = scanner.Current; foreach (var cell in cells) { totalUsage += int.Parse(cell.Value); } } Console.WriteLine("Sum from filtered row scan: " + totalUsage); }
/// <summary> /// Builds a scanner creation URI. /// </summary> /// <param name="scannerOptions">Name of the table.</param> public string BuildScannerCreate(ScannerOptions scannerOptions) { if (scannerOptions == null || string.IsNullOrEmpty(scannerOptions.TableName)) { throw new ArgumentException(Resources.ResourceBuilder_MinimumForScannerNotMet); } return new StringBuilder(scannerOptions.TableName).AppendFormat(_appendSegmentFormat, _scanner).ToString(); }
public virtual Task <IScanner> CreateScannerAsync(ScannerOptions options) { return(Task.Run(() => CreateScanner(options))); }
/// <summary> /// Creates the scanner. /// </summary> /// <param name="options">The options.</param> public IScanner CreateScanner(ScannerOptions options) { string resource = _resourceBuilder.BuildScannerCreate(options); IRestResponse response = SendRequest(Method.PUT, resource, HBaseMimeTypes.Xml, content: _scannerConverter.Convert(options)); _errorProvider.ThrowIfStatusMismatch(response, HttpStatusCode.Created); string scannerLocation = response.Headers.Where(header => header.Type == ParameterType.HttpHeader && header.Name == RestConstants.LocationHeader) .Select(header => header.Value.ToString()) .FirstOrDefault(); return string.IsNullOrEmpty(scannerLocation) ? null : new Scanner(options.TableName, new Uri(scannerLocation).PathAndQuery.Trim('/'), this); }
T CreateScannerInternal <T>(ScannerOptions options, Func <Method, string, string, string, string, HttpStatusCode[], T> action) { string resource = ResourceBuilder.BuildScannerCreate(options); return(action(Method.PUT, resource, HBaseMimeTypes.Xml, null, ScannerConverter.Convert(options), new[] { HttpStatusCode.Created })); }
/// <summary> /// Creates the scanner. /// </summary> /// <param name="options">The options.</param> public virtual IScanner CreateScanner(ScannerOptions options) { return(ProcessCreateScannerResponse(CreateScannerInternal(options, SendRequest), options)); }
/// <summary> /// Creates the scanner. /// </summary> /// <param name="options">The options.</param> public virtual async Task <IScanner> CreateScannerAsync(ScannerOptions options) { return(ProcessCreateScannerResponse(await CreateScannerInternal(options, SendRequestAsync), options)); }