{"id":26525,"date":"2024-03-16T06:50:17","date_gmt":"2024-03-16T06:50:17","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/"},"modified":"2024-03-22T08:47:48","modified_gmt":"2024-03-22T08:47:48","slug":"how-does-spark-read-local-hbase-files","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/","title":{"rendered":"How does Spark read local HBase files?"},"content":{"rendered":"<p>To read local HBase files in Spark, you can utilize the HBase Java API and the Spark HBase Connector. The following are the general steps for using Spark to read local HBase files.<\/p>\n<ol>\n<li>Add dependencies for HBase and Spark in the pom.xml file (if it&#8217;s a Maven project) or build.sbt file (if it&#8217;s an SBT project). For example, for a Maven project, you can add the following dependencies:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependencies<\/span>&gt;<\/span>\r\n    <span class=\"hljs-comment\">&lt;!-- HBase --&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.apache.hbase<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>hbase-client<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>2.4.6<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n    \r\n    <span class=\"hljs-comment\">&lt;!-- Spark --&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.apache.spark<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>spark-sql_2.12<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>3.2.0<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n    \r\n    <span class=\"hljs-comment\">&lt;!-- HBase Connector for Spark --&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.apache.hbase<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>hbase-spark<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>3.0.0<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependencies<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>Import the necessary classes in the Spark application.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">import<\/span> org.apache.hadoop.hbase.<span class=\"hljs-type\">HBaseConfiguration<\/span>\r\n<span class=\"hljs-keyword\">import<\/span> org.apache.spark.sql.<span class=\"hljs-type\">SparkSession<\/span>\r\n<span class=\"hljs-keyword\">import<\/span> org.apache.hadoop.hbase.spark.<span class=\"hljs-type\">HBaseContext<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>Instantiate a SparkSession object:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">val<\/span> spark = <span class=\"hljs-type\">SparkSession<\/span>.builder()\r\n  .appName(<span class=\"hljs-string\">\"Read HBase File\"<\/span>)\r\n  .master(<span class=\"hljs-string\">\"local\"<\/span>)\r\n  .getOrCreate()\r\n<\/code><\/pre>\n<ol>\n<li>Create an HBase configuration object and set the necessary parameters.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">val<\/span> hbaseConf = <span class=\"hljs-type\">HBaseConfiguration<\/span>.create()\r\nhbaseConf.set(<span class=\"hljs-string\">\"hbase.zookeeper.quorum\"<\/span>, <span class=\"hljs-string\">\"localhost\"<\/span>)\r\nhbaseConf.set(<span class=\"hljs-string\">\"hbase.zookeeper.property.clientPort\"<\/span>, <span class=\"hljs-string\">\"2181\"<\/span>)\r\n<\/code><\/pre>\n<ol>\n<li>Create an HBaseContext object.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">val<\/span> hbaseContext = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">HBaseContext<\/span>(spark.sparkContext, hbaseConf)\r\n<\/code><\/pre>\n<ol>\n<li>fetch large quantities<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">val<\/span> tableName = <span class=\"hljs-string\">\"my_table\"<\/span>\r\n<span class=\"hljs-keyword\">val<\/span> cf = <span class=\"hljs-string\">\"my_column_family\"<\/span>\r\n<span class=\"hljs-keyword\">val<\/span> columns = <span class=\"hljs-type\">Seq<\/span>(<span class=\"hljs-string\">\"column1\"<\/span>, <span class=\"hljs-string\">\"column2\"<\/span>)\r\n\r\n<span class=\"hljs-keyword\">val<\/span> rdd = hbaseContext.bulkGet[<span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">Byte<\/span>], <span class=\"hljs-type\">Array<\/span>[(<span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">Byte<\/span>], <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">Byte<\/span>], <span class=\"hljs-type\">Array<\/span>[<span class=\"hljs-type\">Byte<\/span>])]](\r\n  tableName,\r\n  <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-comment\">\/\/ \u5e76\u884c\u5ea6<\/span>\r\n  spark.sparkContext.parallelize(<span class=\"hljs-type\">Seq<\/span>(<span class=\"hljs-string\">\"rowkey1\"<\/span>, <span class=\"hljs-string\">\"rowkey2\"<\/span>)), <span class=\"hljs-comment\">\/\/ \u8981\u8bfb\u53d6\u7684\u884c\u952e<\/span>\r\n  record =&gt; {\r\n    <span class=\"hljs-comment\">\/\/ \u521b\u5efaGet\u5bf9\u8c61\u5e76\u8bbe\u7f6e\u8981\u83b7\u53d6\u7684\u5217\u65cf\u548c\u5217<\/span>\r\n    <span class=\"hljs-keyword\">val<\/span> get = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">Get<\/span>(record)\r\n    columns.foreach(column =&gt; {\r\n      get.addColumn(<span class=\"hljs-type\">Bytes<\/span>.toBytes(cf), <span class=\"hljs-type\">Bytes<\/span>.toBytes(column))\r\n    })\r\n    get\r\n  },\r\n  (result: <span class=\"hljs-type\">Result<\/span>) =&gt; {\r\n    <span class=\"hljs-comment\">\/\/ \u5c06\u7ed3\u679c\u8f6c\u6362\u4e3aArray[(Array[Byte], Array[Byte], Array[Byte])]<\/span>\r\n    result.rawCells().map(cell =&gt; (cell.getRowArray, cell.getFamilyArray, cell.getValueArray))\r\n  }\r\n)\r\n<\/code><\/pre>\n<ol>\n<li>You can further process the data in RDD, for example, by converting it into a DataFrame for analysis.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">import<\/span> spark.implicits._\r\n\r\n<span class=\"hljs-keyword\">val<\/span> df = rdd.map(row =&gt; (<span class=\"hljs-type\">Bytes<\/span>.toString(row._1), <span class=\"hljs-type\">Bytes<\/span>.toString(row._2), <span class=\"hljs-type\">Bytes<\/span>.toString(row._3)))\r\n  .toDF(<span class=\"hljs-string\">\"rowkey\"<\/span>, <span class=\"hljs-string\">\"column_family\"<\/span>, <span class=\"hljs-string\">\"value\"<\/span>)\r\n\r\ndf.show()\r\n<\/code><\/pre>\n<p>This allows you to read local HBase files and perform further processing and analysis in Spark. Please note that the above example assumes that the HBase configuration and ZooKeeper connection parameters have been correctly set up.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To read local HBase files in Spark, you can utilize the HBase Java API and the Spark HBase Connector. The following are the general steps for using Spark to read local HBase files. Add dependencies for HBase and Spark in the pom.xml file (if it&#8217;s a Maven project) or build.sbt file (if it&#8217;s an SBT [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-26525","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How does Spark read local HBase files? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How does Spark read local HBase files?\" \/>\n<meta property=\"og:description\" content=\"To read local HBase files in Spark, you can utilize the HBase Java API and the Spark HBase Connector. The following are the general steps for using Spark to read local HBase files. Add dependencies for HBase and Spark in the pom.xml file (if it&#8217;s a Maven project) or build.sbt file (if it&#8217;s an SBT [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T06:50:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T08:47:48+00:00\" \/>\n<meta name=\"author\" content=\"Benjamin Taylor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin Taylor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/\"},\"author\":{\"name\":\"Benjamin Taylor\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9\"},\"headline\":\"How does Spark read local HBase files?\",\"datePublished\":\"2024-03-16T06:50:17+00:00\",\"dateModified\":\"2024-03-22T08:47:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/\"},\"wordCount\":162,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/\",\"name\":\"How does Spark read local HBase files? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T06:50:17+00:00\",\"dateModified\":\"2024-03-22T08:47:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How does Spark read local HBase files?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9\",\"name\":\"Benjamin Taylor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g\",\"caption\":\"Benjamin Taylor\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/benjamintaylor\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How does Spark read local HBase files? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/","og_locale":"en_US","og_type":"article","og_title":"How does Spark read local HBase files?","og_description":"To read local HBase files in Spark, you can utilize the HBase Java API and the Spark HBase Connector. The following are the general steps for using Spark to read local HBase files. Add dependencies for HBase and Spark in the pom.xml file (if it&#8217;s a Maven project) or build.sbt file (if it&#8217;s an SBT [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T06:50:17+00:00","article_modified_time":"2024-03-22T08:47:48+00:00","author":"Benjamin Taylor","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Benjamin Taylor","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/"},"author":{"name":"Benjamin Taylor","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9"},"headline":"How does Spark read local HBase files?","datePublished":"2024-03-16T06:50:17+00:00","dateModified":"2024-03-22T08:47:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/"},"wordCount":162,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/","url":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/","name":"How does Spark read local HBase files? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T06:50:17+00:00","dateModified":"2024-03-22T08:47:48+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-does-spark-read-local-hbase-files\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How does Spark read local HBase files?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9","name":"Benjamin Taylor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g","caption":"Benjamin Taylor"},"url":"https:\/\/www.silicloud.com\/blog\/author\/benjamintaylor\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/26525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=26525"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/26525\/revisions"}],"predecessor-version":[{"id":60694,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/26525\/revisions\/60694"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=26525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=26525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=26525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}