{"id":52015,"date":"1970-01-01T00:00:00","date_gmt":"1970-01-01T08:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/"},"modified":"1970-01-01T00:00:00","modified_gmt":"1970-01-01T08:00:00","slug":"tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark","status":"publish","type":"post","link":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/","title":{"rendered":"Tutorial Visualizing Casas Data Stored in GridDB with Zeppelin and PySpark."},"content":{"rendered":"<p>In our final tutorial using the CASAS dataset, we demonstrate the flexibility of Zeppelin with it&#8217;s ease of visualization. In case you missed the first tutorial on ingesting Casas dataset with Kafka, it is available <a href=\"\">here<\/a> and the tutorial exmaing the data set with JayDeBeApi and Jupyter Notebook is <a href=\"\">here<\/a>. <\/p>\n<h1>Setup<\/h1>\n<p>We start off by downloading binary Zeppelin package with bundled with all of its interpreters from an <a href=\"http:\/\/www.apache.org\/dyn\/closer.cgi\/zeppelin\/zeppelin-0.9.0-preview2\/zeppelin-0.9.0-preview2-bin-all.tgz\">Apache mirror<\/a>. The file is 1.5GB, so patience is required. <\/p>\n<p>After the download is complete, you can untar and start Zeppelin.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">\ntar zxvf zeppelin-0.9.0-preview2-bin-all.tgz\ncd zeppelin-0.9.0-preview2-bin-all\/\nbin\/zeppelin-daemon.sh start\n<\/code><\/pre>\n<\/div>\n<p>With Zeppelin started, head over to <a href=\"http:\/\/localhost:8080\/\">http:\/\/localhost:8080\/<\/a> to get started.<\/p>\n<p>In order for PySpark to use the GridDB JDBC driver, it must be added to the CLASSPATH. Todo this, click on the menu in the top right corner, then interpreters. From that page, scroll down to &#8220;Spark&#8221; and click &#8220;edit&#8221;. Then scroll down to Dependencies and add an Artifact which is the path to your gridstore-jdbc.jar. If you&#8217;ve followed the <a href=\"https:\/\/griddb.net\/en\/blog\/connecting-to-griddb-via-jdbc-with-sqlworkbench-j\/\">JDBC Blog<\/a>, it will be <code>\/usr\/share\/java\/gridstore-jdbc.jar<\/code>.<\/p>\n<h1>Single Sensor<\/h1>\n<p>To start off with, we&#8217;re going plot a single temperature sensor. It&#8217;s a fairly straight forward query, the only complexity being that we need to convert the <code>message<\/code> column to an integer as it&#8217;s stored as a string in GridDB. <\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">\n%spark.pyspark\n\nfrom pyspark.sql import functions as F\nfrom pyspark.sql.types import *\n\ndf = spark.read.format(\"jdbc\").option(\"url\", \"jdbc:gs:\/\/239.0.0.1:41999\/defaultCluster\/public\").option(\"user\", \"admin\").option(\"password\", \"admin\").option(\"driver\", \"com.toshiba.mwcloud.gs.sql.Driver\").option(\"dbtable\", \"csh101_T101\").load()\n<\/code><\/pre>\n<\/div>\n<p>The data is loaded one long call that specifies the JDBC URL, username, password, driver, and container (aka, &#8220;dbtable&#8221;).<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">\ndf = df.withColumn(\"temp\", df[\"message\"].cast(IntegerType())).drop(\"sensor\").drop(\"translate01\").drop(\"translate02\").drop(\"message\").drop(\"sensorActivity\")\n<\/code><\/pre>\n<\/div>\n<p>The above code adds a new column <code>temp<\/code> which is based on casting the &#8220;message&#8221; column to an IntegerType and then we drop the remaining columns except for <code>dt<\/code> as they are not required for the visualization.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">\nz.show(df)\n<\/code><\/pre>\n<\/div>\n<p>Finally, we use Zeppelin&#8217;s visualization function, <code>z.show()<\/code> to plot a graph. To plot the graphs properly, we needed to drag and drop the <code>temp<\/code> field into the values as shown below:<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2020\/09\/zep1-1024x675.png\" alt=\"\" width=\"1024\" height=\"675\" class=\"alignnone size-large wp-image-26919\" srcset=\"\/wp-content\/uploads\/2020\/09\/zep1-1024x675.png 1024w, \/wp-content\/uploads\/2020\/09\/zep1-300x198.png 300w, \/wp-content\/uploads\/2020\/09\/zep1-768x506.png 768w, \/wp-content\/uploads\/2020\/09\/zep1-600x396.png 600w, \/wp-content\/uploads\/2020\/09\/zep1.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h1>Multiple Sensors<\/h1>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">\n%spark.pyspark\n\nfrom pyspark.sql import functions as F\nfrom pyspark.sql.types import *\nfrom functools import reduce\nfrom pyspark.sql import DataFrame\n\ntdf = spark.read.format(\"jdbc\").option(\"url\", \"jdbc:gs:\/\/239.0.0.1:41999\/defaultCluster\/public\").option(\"user\", \"admin\").option(\"password\", \"admin\").option(\"driver\", \"com.toshiba.mwcloud.gs.sql.Driver\").option(\"query\", \"select * from \"#tables\"\" ).load()\n\ntdf = tdf.filter(F.col(\"TABLE_NAME\").startswith(\"csh101_T\"))\n<\/code><\/pre>\n<\/div>\n<p>In this example we query a table using .option(&#8220;query&#8221;,) instead of a loading an entire table and then filter the results so we are only fetching tables that begin with &#8220;csh101_T&#8221; or all of the temperature sensors at the Casas 101 site. <\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">\ndf_names = []\ndfs = []\nfor f in tdf.rdd.collect():\n    table = f[\"TABLE_NAME\"]\n    df_names.append(table)\n    rawdf = spark.read.format(\"jdbc\").option(\"url\", \"jdbc:gs:\/\/239.0.0.1:41999\/defaultCluster\/public\").option(\"user\", \"admin\").option(\"password\", \"admin\").option(\"driver\", \"com.toshiba.mwcloud.gs.sql.Driver\").option(\"dbtable\", table).load()\n    dfs.append(rawdf.withColumn(\"temp\", rawdf[\"message\"].cast(IntegerType())).drop(\"translate01\").drop(\"translate02\").drop(\"message\").drop(\"sensorActivity\"))\n    \noutdf = reduce(DataFrame.unionAll, dfs)\n    \nz.show(outdf.orderBy(outdf.dt.asc()))\n<\/code><\/pre>\n<\/div>\n<p>With a list of the temperature sensor names, we query the individual sensor containers\/tables before merging them and using the Zeppelin display function to show them. Now within the Zepplin visualization tool, we drag and drop <code>sensor<\/code> to the Group list box and <code>temp<\/code> to the Values list box as seen below: <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2020\/09\/zep2-1024x684.png\" alt=\"\" width=\"1024\" height=\"684\" class=\"alignnone size-large wp-image-26918\" srcset=\"\/wp-content\/uploads\/2020\/09\/zep2-1024x684.png 1024w, \/wp-content\/uploads\/2020\/09\/zep2-300x200.png 300w, \/wp-content\/uploads\/2020\/09\/zep2-768x513.png 768w, \/wp-content\/uploads\/2020\/09\/zep2-600x401.png 600w, \/wp-content\/uploads\/2020\/09\/zep2.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>The Zeppelin notebook can be downloaded <a href=\"https:\/\/griddb.net\/en\/download\/26926\/\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our final tutorial using the CASAS dataset, we demonstrate the flexibility of Zeppelin with it&#8217;s ease of visualization. In case you missed the first tutorial on ingesting Casas dataset with Kafka, it is available here and the tutorial exmaing the data set with JayDeBeApi and Jupyter Notebook is here. Setup We start off by [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":52016,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-52015","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial Visualizing Casas Data Stored in GridDB with Zeppelin and PySpark. | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"In our final tutorial using the CASAS dataset, we demonstrate the flexibility of Zeppelin with it&#039;s ease of visualization. In case you missed the first\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial Visualizing Casas Data Stored in GridDB with Zeppelin and PySpark. | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"In our final tutorial using the CASAS dataset, we demonstrate the flexibility of Zeppelin with it&#039;s ease of visualization. In case you missed the first\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"1970-01-01T08:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb.net\/wp-content\/uploads\/2025\/12\/zep2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"801\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Owen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Owen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/\"},\"author\":{\"name\":\"Owen\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\"},\"headline\":\"Tutorial Visualizing Casas Data Stored in GridDB with Zeppelin and PySpark.\",\"datePublished\":\"1970-01-01T08:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/\"},\"wordCount\":410,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2025\/12\/zep2.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/\",\"url\":\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/\",\"name\":\"Tutorial Visualizing Casas Data Stored in GridDB with Zeppelin and PySpark. | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2025\/12\/zep2.png\",\"datePublished\":\"1970-01-01T08:00:00+00:00\",\"description\":\"In our final tutorial using the CASAS dataset, we demonstrate the flexibility of Zeppelin with it's ease of visualization. In case you missed the first\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2025\/12\/zep2.png\",\"contentUrl\":\"\/wp-content\/uploads\/2025\/12\/zep2.png\",\"width\":1200,\"height\":801},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\",\"name\":\"Owen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g\",\"caption\":\"Owen\"},\"url\":\"https:\/\/griddb.net\/en\/author\/owen\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial Visualizing Casas Data Stored in GridDB with Zeppelin and PySpark. | GridDB: Open Source Time Series Database for IoT","description":"In our final tutorial using the CASAS dataset, we demonstrate the flexibility of Zeppelin with it's ease of visualization. In case you missed the first","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:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial Visualizing Casas Data Stored in GridDB with Zeppelin and PySpark. | GridDB: Open Source Time Series Database for IoT","og_description":"In our final tutorial using the CASAS dataset, we demonstrate the flexibility of Zeppelin with it's ease of visualization. In case you missed the first","og_url":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"1970-01-01T08:00:00+00:00","og_image":[{"width":1200,"height":801,"url":"https:\/\/griddb.net\/wp-content\/uploads\/2025\/12\/zep2.png","type":"image\/png"}],"author":"Owen","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"Written by":"Owen","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/"},"author":{"name":"Owen","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66"},"headline":"Tutorial Visualizing Casas Data Stored in GridDB with Zeppelin and PySpark.","datePublished":"1970-01-01T08:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/"},"wordCount":410,"commentCount":0,"publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2025\/12\/zep2.png","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/","url":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/","name":"Tutorial Visualizing Casas Data Stored in GridDB with Zeppelin and PySpark. | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2025\/12\/zep2.png","datePublished":"1970-01-01T08:00:00+00:00","description":"In our final tutorial using the CASAS dataset, we demonstrate the flexibility of Zeppelin with it's ease of visualization. In case you missed the first","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/blog\/tutorial-visualizing-casas-data-stored-in-griddb-with-zeppelin-and-pyspark\/#primaryimage","url":"\/wp-content\/uploads\/2025\/12\/zep2.png","contentUrl":"\/wp-content\/uploads\/2025\/12\/zep2.png","width":1200,"height":801},{"@type":"WebSite","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66","name":"Owen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g","caption":"Owen"},"url":"https:\/\/griddb.net\/en\/author\/owen\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/52015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/comments?post=52015"}],"version-history":[{"count":0,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/52015\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media\/52016"}],"wp:attachment":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media?parent=52015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/categories?post=52015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/tags?post=52015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}