{"id":28550560,"url":"https://github.com/elastacloud/marlin","last_synced_at":"2026-02-04T02:34:20.159Z","repository":{"id":73991191,"uuid":"21061909","full_name":"elastacloud/marlin","owner":"elastacloud","description":"C# client for HBase on MS Azure HDInsight","archived":false,"fork":false,"pushed_at":"2014-07-03T08:24:35.000Z","size":989,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-12T09:18:52.409Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"XSLT","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elastacloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-21T06:17:09.000Z","updated_at":"2014-08-19T12:52:57.000Z","dependencies_parsed_at":"2023-02-25T17:00:25.230Z","dependency_job_id":null,"html_url":"https://github.com/elastacloud/marlin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/elastacloud/marlin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastacloud%2Fmarlin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastacloud%2Fmarlin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastacloud%2Fmarlin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastacloud%2Fmarlin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elastacloud","download_url":"https://codeload.github.com/elastacloud/marlin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastacloud%2Fmarlin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29064724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T01:55:38.219Z","status":"online","status_checked_at":"2026-02-04T02:00:07.999Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-10T03:09:38.840Z","updated_at":"2026-02-04T02:34:20.132Z","avatar_url":"https://github.com/elastacloud.png","language":"XSLT","funding_links":[],"categories":[],"sub_categories":[],"readme":"Marlin\n======\n\nMarlin is a C# client for HBase on Azure HDInsight.\nIt currently targets HBase 0.96.2 and HDInsight 3.0 on Microsoft Azure.\nThe communication works through HBase REST (StarGate) which uses ProtoBuf as a serialization format.\n\nMissing features\n================\n\nThere are some core features missing that are documented in the [Stargate wiki](http://wiki.apache.org/hadoop/Hbase/Stargate \"stargate docs\"):\n- Enhancements to existing methods e.g. multi-cell stores with timestamps, versions or specific columns\n\n_Besides that..._\n\nMarlin currently only provides the C# \u003c-\u003e ProtoBuf \u003c-\u003e Stargate communication layer.\nAs you can imagine, this API is neither very C#'y nor is it very convenient to use.\n\n*If you want to layer a much nicer/fluent client API on top of that, please feel free to fork and open a pull request.*\n\nBuild\n=====\n\nImport the solution file into VS2013 and compile. Retrieve the resulting *.dll files.\n\nA NuGet publish will be announced as soon as a first feature complete version is done.\n\nUsage\n=====\n\nAfter compilation, you can easily use the library to get the version of the HBase/HDInsight cluster you're running on:\n```csharp\nvar credentials = ClusterCredentials.FromFile(\"credentials.txt\");\nvar marlin = new Marlin(credentials);\nvar version = marlin.GetVersion();\nConsole.WriteLine(version);\n\n// yields:\nRestVersion: 0.0.2, JvmVersion: Azul Systems, Inc. 1.7.0_55-24.55-b03, OsVersion: Windows Server 2012 R2 6.3 amd64, ServerVersion: jetty/6.1.26, JerseyVersion: 1.8, ExtensionObject: \n```\n\nThe credentials text file contains exactly three lines:\n- Azure HDInsight URL\n- Azure HDInsight Username\n- Azure HDInsight Password\n \nAn example looks like this:\n```\nhttps://azurehbase.azurehdinsight.net\nadmin\n_mySup3rS4f3P4ssW0rd.\n```\n\nTable creation works like this:\n\n```csharp\nvar marlin = new Marlin(ClusterCredentials.FromFile(\"credentials.txt\"));\nvar tableName = \"table\";\nvar testTableSchema = new TableSchema();\ntestTableSchema.name = tableName;\ntestTableSchema.columns.Add(new ColumnSchema() { name = \"d\" });\ntestTableSchema.columns.Add(new ColumnSchema() { name = \"f\" });\nmarlin.CreateTable(testTableSchema);\n```\n\nInserting stuff can be done like this:\n\n```csharp\nvar testKey = \"content\";\nvar testValue = \"the force is strong in this column\";\n\nvar marlin = new Marlin(ClusterCredentials.FromFile(\"credentials.txt\"));\nCellSet set = new CellSet();\nCellSet.Row row = new CellSet.Row() { key = Encoding.UTF8.GetBytes(testKey) };\nset.rows.Add(row);\n\nvar value = new Cell() { column = Encoding.UTF8.GetBytes(\"d:starwars\"), data = Encoding.UTF8.GetBytes(testValue) };\nrow.values.Add(value);\nmarlin.StoreCells(\"table\", set);\n```\n\nRetrieving all cells for a key looks like that:\n\n```csharp\nvar cells = marlin.GetCells(\"table\", testKey);\n// get the first value from the row.\nConsole.WriteLine(Encoding.UTF8.GetString(cells.rows[0].values[0].data));\n// with the previous insert, it should yield: \"the force is strong in this column\"\n```\n\nScanning over rows looks like this:\n\n```csharp\n\nvar marlin = new Marlin(_credentials);\n// assume the table has integer keys and we want data between keys 25 and 35\nvar scanSettings = new Scanner()\n{\n\tbatch = 10,\n\tstartRow = BitConverter.GetBytes(25),\n\tendRow = BitConverter.GetBytes(35)\n};\nvar scannerInfo = marlin.CreateScanner(_testTableName, scanSettings);\nCellSet next = null;\nwhile ((next = marlin.ScannerGetNext(scannerInfo)) != null)\n{\n\tforeach (var row in next.rows)\n\t\t// read the rows\n}            \n\n```\n\n\nNaming\n======\n\nThe name \"Marlin\" follows the convention of Skype's data team.\nWe name parts of our real-time pipeline (even the pipeline itself!) after cool fishes. \nFamous Microsoft internal names are Ray, Whaleshark or BlobFish.\n\nSince the Marlin counts as one of the fastest fishes on earth, we aim to be the fastest C# library when querying HBase on HDInsight.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastacloud%2Fmarlin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felastacloud%2Fmarlin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastacloud%2Fmarlin/lists"}