{"paragraphs":[{"text":"%md # Forest Fire Prediction through KMeans Clustering\n\nThe United States Forest Service provides datasets that describe forest fires that have occurred in Canada and the United States since year 2000. We can predict where forest fires are prone to occur by partitioning the locations of past burns into clusters whose centroids can be used to optimally place heavy fire fighting equipment as near as possible to where fires are likely to occur.\n\nDataset:\nhttps://fsapps.nwcg.gov/gisdata.php\n","user":"anonymous","dateUpdated":"2017-10-25T15:23:14+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"markdown","editOnDblClick":true},"editorMode":"ace/mode/markdown","editorHide":true,"tableHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n

Forest Fire Prediction through KMeans Clustering

\n\n

The United States Forest Service provides datasets that describe forest fires that have occurred in Canada and the United States since year 2000. We can predict where forest fires are prone to occur by partitioning the locations of past burns into clusters whose centroids can be used to optimally place heavy fire fighting equipment as near as possible to where fires are likely to occur.

\n

Dataset:
https://fsapps.nwcg.gov/gisdata.php

\n
"}]},"apps":[],"jobName":"paragraph_1508822183588_673811793","id":"20171024-051623_427668146","dateCreated":"2017-10-24T05:16:23+0000","dateStarted":"2017-10-25T15:23:14+0000","dateFinished":"2017-10-25T15:23:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"focus":true,"$$hashKey":"object:4333"},{"title":"Download Raw Data ","text":"%sh\nmkdir -p /mapr/my.cluster.com/user/mapr/data/new/fires\ncd /mapr/my.cluster.com/user/mapr/data/new/fires\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/modis_fire_2016_365_conus_shapefile.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/modis_fire_2015_365_conus_shapefile.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/modis_fire_2014_365_conus_shapefile.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/modis_fire_2013_365_conus_shapefile.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/modis_fire_2012_366_conus_shapefile.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/modis_fire_2011_365_conus_shapefile.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/modis_fire_2010_365_conus_shapefile.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/modis_fire_2009_365_conus_shapefile.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/mcd14ml_2008_005_01_conus_shp.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/mcd14ml_2007_005_01_conus_shp.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/mcd14ml_2006_005_01_conus_shp.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/mcd14ml_2005_005_01_conus_shp.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/mcd14ml_2004_005_01_conus_shp.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/mcd14ml_2003_005_01_conus_shp.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/mcd14ml_2002_005_01_conus_shp.zip\ncurl -s --remote-name https://fsapps.nwcg.gov/afm/data/fireptdata/mcd14ml_2001_005_01_conus_shp.zip\nfind modis*.zip | xargs -I {} unzip {} modis*.dbf\nfind mcd*.zip | xargs -I {} unzip {} mcd*.dbf","user":"anonymous","dateUpdated":"2017-11-10T05:20:42+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"sh","editOnDblClick":false},"editorMode":"ace/mode/sh","editorHide":false,"tableHide":false,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Archive: modis_fire_2009_365_conus_shapefile.zip\n inflating: modis_fire_2009_365_conus.dbf \nArchive: modis_fire_2010_365_conus_shapefile.zip\n inflating: modis_fire_2010_365_conus.dbf \nArchive: modis_fire_2011_365_conus_shapefile.zip\n inflating: modis_fire_2011_365_conus.dbf \nArchive: modis_fire_2012_366_conus_shapefile.zip\n inflating: modis_fire_2012_366_conus.dbf \nArchive: modis_fire_2013_365_conus_shapefile.zip\n inflating: modis_fire_2013_365_conus.dbf \nArchive: modis_fire_2014_365_conus_shapefile.zip\n inflating: modis_fire_2014_365_conus.dbf \nArchive: modis_fire_2015_365_conus_shapefile.zip\n inflating: modis_fire_2015_365_conus.dbf \nArchive: modis_fire_2016_365_conus_shapefile.zip\n inflating: modis_fire_2016_365_conus.dbf \nArchive: mcd14ml_2001_005_01_conus_shp.zip\n inflating: mcd14ml_2001_005_01_conus.dbf \nArchive: mcd14ml_2002_005_01_conus_shp.zip\n inflating: mcd14ml_2002_005_01_conus.dbf \nArchive: mcd14ml_2003_005_01_conus_shp.zip\n inflating: mcd14ml_2003_005_01_conus.dbf \nArchive: mcd14ml_2004_005_01_conus_shp.zip\n inflating: mcd14ml_2004_005_01_conus.dbf \nArchive: mcd14ml_2005_005_01_conus_shp.zip\n inflating: mcd14ml_2005_005_01_conus.dbf \nArchive: mcd14ml_2006_005_01_conus_shp.zip\n inflating: mcd14ml_2006_005_01_conus.dbf \nArchive: mcd14ml_2007_005_01_conus_shp.zip\n inflating: mcd14ml_2007_005_01_conus.dbf \nArchive: mcd14ml_2008_005_01_conus_shp.zip\n inflating: mcd14ml_2008_005_01_conus.dbf \n"}]},"apps":[],"jobName":"paragraph_1508875968857_1867429893","id":"20171024-201248_1170429857","dateCreated":"2017-10-24T20:12:48+0000","dateStarted":"2017-11-10T05:20:43+0000","dateFinished":"2017-11-10T05:21:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4334"},{"title":"Backup original dataset","text":"%sh\nmaprcli volume snapshot create -cluster my.cluster.com -snapshotname USFS_Experiment-`date +%Y%m%d%H%M%S` -volume mapr_home\nls -la /mapr/my.cluster.com/user/mapr/.snapshot/\n\n","user":"anonymous","dateUpdated":"2017-11-10T05:30:03+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"sh","editOnDblClick":false},"editorMode":"ace/mode/sh","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"total 3\ndrwxr-xr-x 5 root root 3 Nov 10 05:30 .\ndrwxr-xr-x 9 mapr mapr 14 Nov 9 23:50 ..\ndrwxr-xr-x 9 mapr mapr 14 Nov 9 23:50 USFS_Experiment\ndrwxr-xr-x 9 mapr mapr 14 Nov 9 23:50 USFS_Experiment-20171110052951\ndrwxr-xr-x 9 mapr mapr 14 Nov 9 23:50 USFS_Experiment-20171110053003\n"}]},"apps":[],"jobName":"paragraph_1510291334892_1101351676","id":"20171110-052214_828862000","dateCreated":"2017-11-10T05:22:14+0000","dateStarted":"2017-11-10T05:30:03+0000","dateFinished":"2017-11-10T05:30:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4335"},{"title":"Convert shapefiles to CSVs","text":"%python\nimport csv\nfrom dbfpy import dbf\nimport os\nimport sys\nDATADIR='/mapr/my.cluster.com/user/mapr/data/fires/'\n\nfor filename in os.listdir(DATADIR):\n\n if filename.endswith('.dbf'):\n print \"Converting %s to csv\" % filename\n csv_fn = DATADIR+filename[:-4]+ \".csv\"\n with open(csv_fn,'wb') as csvfile:\n in_db = dbf.Dbf(DATADIR+filename)\n out_csv = csv.writer(csvfile)\n names = []\n for field in in_db.header.fields:\n names.append(field.name)\n out_csv.writerow(names)\n for rec in in_db:\n out_csv.writerow(rec.fieldData)\n in_db.close()\n print \"Done...\"\n\n","user":"anonymous","dateUpdated":"2017-11-10T05:30:13+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"python","editOnDblClick":false},"editorMode":"ace/mode/python","title":true,"tableHide":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Converting mcd14ml_2002_005_01_conus.dbf to csv\nDone...\nConverting modis_fire_2009_365_conus.dbf to csv\nDone...\nConverting modis_fire_2013_365_conus.dbf to csv\nDone...\nConverting mcd14ml_2005_005_01_conus.dbf to csv\nDone...\nConverting modis_fire_2016_365_conus.dbf to csv\nDone...\nConverting modis_fire_2015_365_conus.dbf to csv\nDone...\nConverting mcd14ml_2004_005_01_conus.dbf to csv\nDone...\nConverting modis_fire_2011_365_conus.dbf to csv\nDone...\nConverting mcd14ml_2001_005_01_conus.dbf to csv\nDone...\nConverting modis_fire_2012_366_conus.dbf to csv\nDone...\nConverting mcd14ml_2003_005_01_conus.dbf to csv\nDone...\nConverting modis_fire_2014_365_conus.dbf to csv\nDone...\nConverting mcd14ml_2007_005_01_conus.dbf to csv\nDone...\nConverting mcd14ml_2008_005_01_conus.dbf to csv\nDone...\nConverting mcd14ml_2006_005_01_conus.dbf to csv\nDone...\nConverting modis_fire_2010_365_conus.dbf to csv\nDone...\n"}]},"apps":[],"jobName":"paragraph_1508876509276_-96747179","id":"20171024-202149_2037979424","dateCreated":"2017-10-24T20:21:49+0000","dateStarted":"2017-11-10T05:30:13+0000","dateFinished":"2017-11-10T05:33:04+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4336"},{"title":"Import Spark ML Libraries","text":"import org.apache.spark._\nimport org.apache.spark.rdd.RDD\nimport org.apache.spark.sql.types._\nimport org.apache.spark.sql.functions._\nimport org.apache.spark.sql._\nimport org.apache.spark._\nimport org.apache.spark.ml.feature.StringIndexer\nimport org.apache.spark.ml.feature.VectorAssembler\nimport org.apache.spark.ml.clustering.KMeans\nimport org.apache.spark.ml.clustering.KMeansModel\nimport org.apache.spark.mllib.linalg.Vectors","user":"anonymous","dateUpdated":"2017-11-10T05:32:11+0000","config":{"colWidth":12,"editorMode":"ace/mode/scala","results":[{"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}}}],"enabled":true,"editorSetting":{"language":"scala"},"tableHide":true,"title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nimport org.apache.spark._\n\nimport org.apache.spark.rdd.RDD\n\nimport org.apache.spark.sql.types._\n\nimport org.apache.spark.sql.functions._\n\nimport org.apache.spark.sql._\n\nimport org.apache.spark._\n\nimport org.apache.spark.ml.feature.StringIndexer\n\nimport org.apache.spark.ml.feature.VectorAssembler\n\nimport org.apache.spark.ml.clustering.KMeans\n\nimport org.apache.spark.ml.clustering.KMeansModel\n\nimport org.apache.spark.mllib.linalg.Vectors\n"}]},"apps":[],"jobName":"paragraph_1508821773190_2078330813","id":"20161030-025214_1655763979","dateCreated":"2017-10-24T05:09:33+0000","dateStarted":"2017-11-10T05:32:11+0000","dateFinished":"2017-11-10T05:32:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4337"},{"title":"Define schema for datasets since 2009","text":"import sqlContext.implicits._\nimport sqlContext._\nval modis_schema = StructType(Array(\n StructField(\"area\", DoubleType, true),\n StructField(\"perimeter\", DoubleType, true),\n StructField(\"firenum\", IntegerType, true), \n StructField(\"fire_id\", IntegerType, true), \n StructField(\"latitude\", DoubleType, true),\n StructField(\"longitude\", DoubleType, true),\n StructField(\"date\", TimestampType, true),\n StructField(\"julian\", IntegerType, true),\n StructField(\"gmt\", IntegerType, true),\n StructField(\"temp\", DoubleType, true), \n StructField(\"spix\", DoubleType, true), \n StructField(\"tpix\", DoubleType, true), \n StructField(\"src\", StringType, true),\n StructField(\"sat_src\", StringType, true), \n StructField(\"conf\", IntegerType, true),\n StructField(\"frp\", DoubleType, true)\n))","user":"anonymous","dateUpdated":"2017-11-10T05:33:55+0000","config":{"colWidth":12,"results":[{"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}}}],"enabled":true,"editorSetting":{"language":"scala"},"editorMode":"ace/mode/scala","tableHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nimport sqlContext.implicits._\n\nimport sqlContext._\n\nmodis_schema: org.apache.spark.sql.types.StructType = StructType(StructField(area,DoubleType,true), StructField(perimeter,DoubleType,true), StructField(firenum,IntegerType,true), StructField(fire_id,IntegerType,true), StructField(latitude,DoubleType,true), StructField(longitude,DoubleType,true), StructField(date,TimestampType,true), StructField(julian,IntegerType,true), StructField(gmt,IntegerType,true), StructField(temp,DoubleType,true), StructField(spix,DoubleType,true), StructField(tpix,DoubleType,true), StructField(src,StringType,true), StructField(sat_src,StringType,true), StructField(conf,IntegerType,true), StructField(frp,DoubleType,true))\n"}]},"apps":[],"jobName":"paragraph_1508821773191_2077946064","id":"20161030-030543_519944270","dateCreated":"2017-10-24T05:09:33+0000","dateStarted":"2017-11-10T05:33:56+0000","dateFinished":"2017-11-10T05:34:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4338"},{"title":"Define schema for datasets before 2009","text":"import sqlContext.implicits._\nimport sqlContext._\nval mcd14ml_schema = StructType(Array(\n StructField(\"area\", DoubleType, true),\n StructField(\"perimeter\", DoubleType, true),\n StructField(\"mcd14ml_\", IntegerType, true), \n StructField(\"latitude\", DoubleType, true), \n StructField(\"longitude\", DoubleType, true),\n StructField(\"t21\", DoubleType, true),\n StructField(\"t31\", DoubleType, true),\n StructField(\"spix\", DoubleType, true),\n StructField(\"tpix\", DoubleType, true),\n StructField(\"date\", TimestampType, true), \n StructField(\"jdate\", IntegerType, true), \n StructField(\"utc\", IntegerType, true), \n StructField(\"satellite\", StringType, true),\n StructField(\"frp\", DoubleType, true), \n StructField(\"confidence\", IntegerType, true)\n))","user":"anonymous","dateUpdated":"2017-11-10T05:34:04+0000","config":{"colWidth":12,"results":[{"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}}}],"enabled":true,"editorSetting":{"language":"scala"},"editorMode":"ace/mode/scala","tableHide":true,"title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nimport sqlContext.implicits._\n\nimport sqlContext._\n\nmcd14ml_schema: org.apache.spark.sql.types.StructType = StructType(StructField(area,DoubleType,true), StructField(perimeter,DoubleType,true), StructField(mcd14ml_,IntegerType,true), StructField(latitude,DoubleType,true), StructField(longitude,DoubleType,true), StructField(t21,DoubleType,true), StructField(t31,DoubleType,true), StructField(spix,DoubleType,true), StructField(tpix,DoubleType,true), StructField(date,TimestampType,true), StructField(jdate,IntegerType,true), StructField(utc,IntegerType,true), StructField(satellite,StringType,true), StructField(frp,DoubleType,true), StructField(confidence,IntegerType,true))\n"}]},"apps":[],"jobName":"paragraph_1508987801157_642409146","id":"20171026-031641_291214581","dateCreated":"2017-10-26T03:16:41+0000","dateStarted":"2017-11-10T05:34:04+0000","dateFinished":"2017-11-10T05:34:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4339"},{"title":"Load Raw Data","text":"// Load datasets containing years 2009-2016\nval df_modis_all = sqlContext.read.format(\"com.databricks.spark.csv\").option(\"header\", \"true\").schema(modis_schema).load(\"/user/mapr/data/fires/modis*.csv\")\n// Include only fires with coordinates in Cascadia\nval df_modis = df_modis_all.filter($\"latitude\" > 42).filter($\"latitude\" < 50).filter($\"longitude\" > -124).filter($\"longitude\" < -110)\n// Load datasets containing years 2000-2008\nval df_mcd14ml_all = sqlContext.read.format(\"com.databricks.spark.csv\").option(\"header\", \"true\").schema(modis_schema).load(\"/user/mapr/data/fires/mcd14ml*.csv\")\n// Include only fires with coordinates in Cascadia\nval df_mcd14ml = df_mcd14ml_all.filter($\"latitude\" > 42).filter($\"latitude\" < 50).filter($\"longitude\" > -124).filter($\"longitude\" < -110)\n// Join both datasets\nval df = df_modis.union(df_mcd14ml).select($\"latitude\", $\"longitude\")","user":"anonymous","dateUpdated":"2017-11-10T05:34:28+0000","config":{"colWidth":12,"results":[{"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}}}],"enabled":true,"editorSetting":{"language":"scala"},"editorMode":"ace/mode/scala","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\ndf_modis_all: org.apache.spark.sql.DataFrame = [area: double, perimeter: double ... 14 more fields]\n\ndf_modis: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [area: double, perimeter: double ... 14 more fields]\n\ndf_mcd14ml_all: org.apache.spark.sql.DataFrame = [area: double, perimeter: double ... 14 more fields]\n\ndf_mcd14ml: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [area: double, perimeter: double ... 14 more fields]\n\ndf: org.apache.spark.sql.DataFrame = [latitude: double, longitude: double]\n"}]},"apps":[],"jobName":"paragraph_1508821773191_2077946064","id":"20161030-030618_394385178","dateCreated":"2017-10-24T05:09:33+0000","dateStarted":"2017-11-10T05:34:29+0000","dateFinished":"2017-11-10T05:34:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4340"},{"title":"What does this data look like, anyway?","text":"df_modis.show(10)\ndf.count()","user":"anonymous","dateUpdated":"2017-11-10T05:36:34+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"scala"},"editorMode":"ace/mode/scala","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"+----+---------+-------+-------+--------+---------+--------------------+------+----+-----+----+----+----+-------+----+-----+\n|area|perimeter|firenum|fire_id|latitude|longitude| date|julian| gmt| temp|spix|tpix| src|sat_src|conf| frp|\n+----+---------+-------+-------+--------+---------+--------------------+------+----+-----+----+----+----+-------+----+-----+\n| 0.0| 0.0| 1| 760349| 49.455| -120.222|2012-12-02 00:00:...| 337|1938|327.4| 1.8| 1.3|ssec| T| 80|104.9|\n| 0.0| 0.0| 2| 760350| 49.455| -120.222|2012-12-02 00:00:...| 337|1940|327.7| 1.8| 1.3|gsfc| T| 81|105.8|\n| 0.0| 0.0| 10| 751851| 49.447| -118.341|2012-11-08 00:00:...| 313|1849|341.3| 1.1| 1.0|ssec| T| 91| 69.6|\n| 0.0| 0.0| 11| 751852| 49.447| -118.341|2012-11-08 00:00:...| 313|1849|341.3| 1.1| 1.0|rsac| T| 91| 69.6|\n| 0.0| 0.0| 12| 751853| 49.447| -118.341|2012-11-08 00:00:...| 313|1850|341.0| 1.0| 1.0|gsfc| T| 90| 68.8|\n| 0.0| 0.0| 18| 368270| 49.442| -118.334|2012-11-08 00:00:...| 313|2030|315.6| 1.1| 1.0|rsac| A| 0| 30.1|\n| 0.0| 0.0| 19| 368272| 49.442| -118.334|2012-11-08 00:00:...| 313|2035|315.6| 1.1| 1.0|gsfc| A| 0| 30.5|\n| 0.0| 0.0| 20| 368271| 49.442| -118.334|2012-11-08 00:00:...| 313|2032|315.6| 1.1| 1.0|ssec| A| 0| 30.1|\n| 0.0| 0.0| 24| 751847| 49.438| -118.343|2012-11-08 00:00:...| 313|1849|310.1| 1.1| 1.0|ssec| T| 29| 24.1|\n| 0.0| 0.0| 25| 751846| 49.438| -118.343|2012-11-08 00:00:...| 313|1849|310.1| 1.1| 1.0|rsac| T| 29| 24.1|\n+----+---------+-------+-------+--------+---------+--------------------+------+----+-----+----+----+----+-------+----+-----+\nonly showing top 10 rows\n\n\nres29: Long = 382059\n"}]},"apps":[],"jobName":"paragraph_1508993481697_820542127","id":"20171026-045121_278676373","dateCreated":"2017-10-26T04:51:21+0000","dateStarted":"2017-11-10T05:36:34+0000","dateFinished":"2017-11-10T05:36:39+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4341"},{"title":"Train the KMeans model for 100 clusters","text":"val featureCols = Array(\"latitude\", \"longitude\")\nval assembler = new VectorAssembler().setInputCols(featureCols).setOutputCol(\"features\")\nval df2 = assembler.transform(df)\nval Array(trainingData, testData) = df2.randomSplit(Array(0.7, 0.3), 5043)\n\nval kmeans = new KMeans().setK(100).setFeaturesCol(\"features\").setMaxIter(4)\nval model = kmeans.fit(trainingData)\nprintln(\"Final Centers: \")\nmodel.clusterCenters.foreach(println)","user":"anonymous","dateUpdated":"2017-11-10T05:37:49+0000","config":{"colWidth":12,"results":[{"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}}}],"enabled":true,"editorSetting":{"language":"scala"},"editorMode":"ace/mode/scala","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nfeatureCols: Array[String] = Array(latitude, longitude)\n\nassembler: org.apache.spark.ml.feature.VectorAssembler = vecAssembler_0cd76fa7fa8a\n\ndf2: org.apache.spark.sql.DataFrame = [latitude: double, longitude: double ... 1 more field]\n\n\ntrainingData: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [latitude: double, longitude: double ... 1 more field]\ntestData: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [latitude: double, longitude: double ... 1 more field]\n\nkmeans: org.apache.spark.ml.clustering.KMeans = kmeans_2935193b4f9b\n\nmodel: org.apache.spark.ml.clustering.KMeansModel = kmeans_2935193b4f9b\nFinal Centers: \n[42.680210355177884,-111.59725937968977]\n[43.46119708737863,-123.4865427184466]\n[42.442929411764744,-117.53071372549019]\n[46.0875555350554,-117.83899317343179]\n[45.41602265641227,-114.0714599875284]\n[47.55513630540607,-113.53880297207272]\n[48.053261769911444,-120.0575677876107]\n[44.56749924698794,-120.14084864457843]\n[44.82837657623227,-115.5686400458541]\n[47.19294624505929,-116.3193355731225]\n[46.0001227998363,-121.42910908718788]\n[44.8225060851927,-121.18407758620698]\n[48.33468846079004,-118.85384316014812]\n[42.190387077294645,-120.67088979468606]\n[44.02496713615028,-110.15051525821596]\n[48.84425513196482,-122.80656598240468]\n[42.31075105485234,-122.05234358047026]\n[47.551169991326965,-110.58471465741545]\n[48.366605830765494,-119.25822801611778]\n[48.64446906398731,-117.12346694870438]\n[43.585575029080985,-114.48100155098888]\n[44.658283501161904,-121.77650561580175]\n[44.2141452775774,-118.80088211968264]\n[44.55109049773757,-111.99945135746607]\n[44.18748645226641,-115.5765583692076]\n[46.32117078916372,-123.24499646643106]\n[42.52315782286375,-123.75475790089729]\n[47.83102030838668,-113.02192553591584]\n[47.88128612303293,-115.86531330472098]\n[47.12880022363031,-120.65368169958985]\n[49.058754511120405,-116.16455518254297]\n[46.380826304691595,-113.73693647865049]\n[42.44345835543764,-115.48029708222808]\n[48.59209729418539,-120.00220245634236]\n[45.832998529411775,-119.65369852941178]\n[42.80554616087751,-118.89474588665446]\n[45.599176134333675,-116.27001750625217]\n[48.933861839804116,-118.36850682056688]\n[49.048490677134495,-114.68882433758593]\n[46.53233677991136,-120.07666395864108]\n[46.81406035665295,-111.96022908093278]\n[47.1773843137255,-117.76145490196078]\n[43.81896350364965,-111.10441423357665]\n[43.16925459375698,-122.42875027673234]\n[44.98837316293926,-117.31802939297128]\n[45.092147323173165,-116.45970379054316]\n[43.94497546728972,-117.09796144859811]\n[47.73799279279282,-111.90307207207206]\n[46.80794588449294,-115.59445702592082]\n[43.30027756410261,-114.9767320512819]\n[46.09602029064988,-115.33729366602705]\n[48.499308211473554,-113.3735359955005]\n[44.98750756756764,-118.83719081081081]\n[44.40895686591275,-114.98714361874055]\n[47.24852644492911,-116.94616739367501]\n[45.91029123173278,-111.63577557411271]\n[48.003583602584705,-118.1010024232631]\n[47.21107859888938,-112.88779026057243]\n[45.47023435063486,-115.44834172421476]\n[43.238007769145376,-116.86420588235295]\n[46.941102733270526,-114.56711545711585]\n[46.65701529902643,-117.49917941585535]\n[45.94805246913578,-114.46334876543213]\n[48.68818710324091,-119.61178349482135]\n[48.989644295302,-120.55701135776974]\n[46.945085929108494,-119.16613748657356]\n[44.985136440391756,-110.62700236406614]\n[43.04288829787237,-120.98841445035451]\n[44.484553467271546,-122.90281594296823]\n[48.713811594202916,-110.6999927536232]\n[44.41465921945706,-117.99498783936656]\n[47.60024606580833,-120.80637696709574]\n[43.30823627998692,-118.22460795267843]\n[45.525432050701745,-114.76495699411534]\n[45.06997001303781,-123.51793546284232]\n[46.03363036649214,-118.63290209424083]\n[42.411339405560874,-113.01552540747844]\n[47.353657579062165,-122.92253217011991]\n[42.53206368330465,-122.91702237521517]\n[46.33238826102806,-116.22532664965372]\n[48.13757210578842,-120.63054391217578]\n[43.42515586116568,-112.30286116568435]\n[47.41553032015065,-120.28863050847455]\n[43.98151189785259,-116.05173766686019]\n[44.031103838245336,-119.47318060315274]\n[47.7202422171602,-114.89755618830677]\n[43.36918918918921,-110.43353443766351]\n[42.23112643678158,-112.30654844006571]\n[48.53467159450896,-115.09414625131996]\n[42.19413026052105,-118.14942525050081]\n[45.980087702573876,-116.88747473784561]\n[46.2978552056652,-114.7551792978756]\n[43.361500727096455,-115.6408245273873]\n[42.509375226586116,-110.5823160120845]\n[44.030212504652035,-121.63664123557874]\n[45.64626304464767,-120.59849650349648]\n[43.691489661882756,-115.3556038676723]\n[44.70506696208765,-114.67740915805025]\n[48.59285780346821,-114.0871531791909]\n[42.57220040180812,-114.04146408839789]\n"}]},"apps":[],"jobName":"paragraph_1508821773192_2076022320","id":"20161030-041240_922666463","dateCreated":"2017-10-24T05:09:33+0000","dateStarted":"2017-11-10T05:37:49+0000","dateFinished":"2017-11-10T05:38:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4342"},{"title":"Save the Model","text":"model.write.overwrite().save(\"/user/mapr/data/save_fire_model\")","user":"anonymous","dateUpdated":"2017-11-10T05:44:53+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"scala"},"editorMode":"ace/mode/scala","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"apps":[],"jobName":"paragraph_1508825252627_49727175","id":"20171024-060732_541192335","dateCreated":"2017-10-24T06:07:32+0000","dateStarted":"2017-11-10T05:44:53+0000","dateFinished":"2017-11-10T05:44:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4343"},{"title":"Setup Map (save centroids)","text":"z.angularBind(\"centroid\", model.clusterCenters)","user":"anonymous","dateUpdated":"2017-11-10T05:44:58+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"results":{},"editorSetting":{"language":"scala"},"editorMode":"ace/mode/scala","title":true,"tableHide":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"apps":[],"jobName":"paragraph_1508821773196_2074483324","id":"20161116-075433_1562509402","dateCreated":"2017-10-24T05:09:33+0000","dateStarted":"2017-11-10T05:44:58+0000","dateFinished":"2017-11-10T05:44:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4344"},{"title":"Setup Map (initialize angular)","text":"%angular\n\n
\n","user":"anonymous","dateUpdated":"2017-11-10T05:45:00+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"scala","editOnDblClick":true},"editorMode":"ace/mode/undefined","editorHide":true,"tableHide":false,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"ANGULAR","data":"\n
\n"}]},"apps":[],"jobName":"paragraph_1508824635310_-1793725754","id":"20171024-055715_1739605740","dateCreated":"2017-10-24T05:57:15+0000","dateStarted":"2017-11-10T05:45:00+0000","dateFinished":"2017-11-10T05:45:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4345"},{"title":"Where would you stage firefighting equipment?","text":"%angular\n
\n","user":"anonymous","dateUpdated":"2017-11-10T05:45:02+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"scala","editOnDblClick":true},"editorMode":"ace/mode/undefined","title":true,"editorHide":true,"tableHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"ANGULAR","data":"
\n"}]},"apps":[],"jobName":"paragraph_1508824643439_-724877985","id":"20171024-055723_1332952506","dateCreated":"2017-10-24T05:57:23+0000","dateStarted":"2017-11-10T05:45:02+0000","dateFinished":"2017-11-10T05:45:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4346"},{"text":"%md # Operationalizing the model\n***Which staging area should respond when a new forest fire starts?***\nWe can use our previously saved model to answer that question. The following section shows how the model we built above can be used to answer that question and how it can be applied to a live feed of newly detected fires for rapid fire response.\n","user":"anonymous","dateUpdated":"2017-11-10T05:45:09+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/text","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n

Operationalizing the model

\n

Which staging area should respond when a new forest fire starts?
We can use our previously saved model to answer that question. The following section shows how the model we built above can be used to answer that question and how it can be applied to a live feed of newly detected fires for rapid fire response.

\n
"}]},"apps":[],"jobName":"paragraph_1510290203666_-866429867","id":"20171110-050323_189619447","dateCreated":"2017-11-10T05:03:23+0000","dateStarted":"2017-11-10T05:45:09+0000","dateFinished":"2017-11-10T05:45:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4347"},{"title":"Which fire station (centroid) should respond to a new fire?","text":"val featureCols = Array(\"lat\", \"lon\")\nval assembler = new VectorAssembler().setInputCols(featureCols).setOutputCol(\"features\")\nval fire_location = Seq((42.3,-112.2 )).toDF(\"lat\", \"lon\")\nval df3 = assembler.transform(fire_location)\nval categories = model.transform(df3)\nval centroid_id = categories.select(\"prediction\").rdd.map(r => r(0)).collect()(0).asInstanceOf[Int]\nval centroid_coordinate = model.clusterCenters(centroid_id)\nprintln(\"%html

Notify fire station #\" + centroid_id + \" at location \" + centroid_coordinate)","user":"anonymous","dateUpdated":"2017-11-10T05:47:36+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"scala"},"editorMode":"ace/mode/scala","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nfeatureCols: Array[String] = Array(lat, lon)\n\nassembler: org.apache.spark.ml.feature.VectorAssembler = vecAssembler_972c6435b5e8\n\nfire_location: org.apache.spark.sql.DataFrame = [lat: double, lon: double]\n\ndf3: org.apache.spark.sql.DataFrame = [lat: double, lon: double ... 1 more field]\n\ncategories: org.apache.spark.sql.DataFrame = [lat: double, lon: double ... 2 more fields]\n\ncentroid_id: Int = 87\n\ncentroid_coordinate: org.apache.spark.ml.linalg.Vector = [42.23112643678158,-112.30654844006571]\n"},{"type":"HTML","data":"

Notify fire station #87 at location [42.23112643678158,-112.30654844006571]\n"}]},"apps":[],"jobName":"paragraph_1510187006074_116684221","id":"20171109-002326_1996678963","dateCreated":"2017-11-09T00:23:26+0000","dateStarted":"2017-11-10T05:47:36+0000","dateFinished":"2017-11-10T05:47:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4348"},{"text":"%md Now that we can identify which fire station should respond to a fire, \nlets identify which fire stations should respond to all the currently active fires posted by USFS.","user":"anonymous","dateUpdated":"2017-11-10T05:51:18+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"markdown","editOnDblClick":true},"editorMode":"ace/mode/markdown","editorHide":true,"tableHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n

Now that we can identify which fire station should respond to a fire,
lets identify which fire stations should respond to all the currently active fires posted by USFS.

\n
"}]},"apps":[],"jobName":"paragraph_1510292894418_664680287","id":"20171110-054814_331474225","dateCreated":"2017-11-10T05:48:14+0000","dateStarted":"2017-11-10T05:51:18+0000","dateFinished":"2017-11-10T05:51:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4349"},{"title":"Initialize web scraper","text":"%pyspark \nimport requests\nimport pandas as pd\nfrom bs4 import BeautifulSoup\n\nclass HTMLTableParser: \n def parse_url(self, url):\n response = requests.get(url)\n soup = BeautifulSoup(response.text, 'lxml')\n return [(table,self.parse_html_table(table))\\\n for table in soup.find_all('table')] \n def parse_html_table(self, table):\n n_columns = 0\n n_rows=0\n column_names = []\n # Find number of rows and columns\n # we also find the column titles if we can\n for row in table.find_all('tr'): \n # Determine the number of rows in the table\n td_tags = row.find_all('td')\n if len(td_tags) > 0:\n n_rows+=1\n if n_columns == 0:\n # Set the number of columns for our table\n n_columns = len(td_tags)\n # Handle column names if we find them\n th_tags = row.find_all('th') \n if len(th_tags) > 0 and len(column_names) == 0:\n for th in th_tags:\n column_names.append(th.get_text())\n # Safeguard on Column Titles\n if len(column_names) > 0 and len(column_names) != n_columns:\n raise Exception(\"Column titles do not match the number of columns\")\n columns = column_names if len(column_names) > 0 else range(0,n_columns)\n df = pd.DataFrame(columns = columns,\n index= range(0,n_rows))\n row_marker = 0\n for row in table.find_all('tr'):\n column_marker = 0\n columns = row.find_all('td')\n for column in columns:\n df.iat[row_marker,column_marker] = column.get_text()\n column_marker += 1\n if len(columns) > 0:\n row_marker += 1\n # Convert to float if possible\n for col in df:\n try:\n df[col] = df[col].astype(float)\n except ValueError:\n pass \n return df","user":"anonymous","dateUpdated":"2017-11-10T05:51:34+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"python"},"editorMode":"ace/mode/python","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"apps":[],"jobName":"paragraph_1510187026087_-449804078","id":"20171109-002346_1337732733","dateCreated":"2017-11-09T00:23:46+0000","dateStarted":"2017-11-10T05:51:34+0000","dateFinished":"2017-11-10T05:51:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4350"},{"title":"Scrape real-time fire detections from web","text":"%pyspark \nurl=\"https://fsapps.nwcg.gov/afm/current.php?op=table&sensor=modis\"\nhp = HTMLTableParser()\ndf = hp.parse_url(url)[4][1] \n# rename the columns according to what's in the first row\ndf.columns = df.iloc[0]\ndf = df.reindex(df.index.drop(0))\nspark_df = sqlContext.createDataFrame(df)\nspark_df.registerTempTable(\"active_fires\") # Save as table\nspark_df.printSchema()","user":"anonymous","dateUpdated":"2017-11-10T07:07:22+0000","config":{"colWidth":12,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":true,"setting":{"multiBarChart":{},"pieChart":{}},"commonSetting":{},"keys":[{"name":"10","index":10,"aggr":"sum"}],"groups":[{"name":"8","index":8,"aggr":"sum"}],"values":[{"name":"10","index":10,"aggr":"sum"}]},"helium":{}}},"editorSetting":{"language":"python"},"editorMode":"ace/mode/python","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"root\n |-- Date (GMT): string (nullable = true)\n |-- Time (GMT): string (nullable = true)\n |-- Satellite: string (nullable = true)\n |-- Longitude(WGS84): string (nullable = true)\n |-- Latitude(WGS84): string (nullable = true)\n |-- Agency: string (nullable = true)\n |-- Admin Unit: string (nullable = true)\n |-- Land Cover: string (nullable = true)\n |-- Fire Danger: string (nullable = true)\n |-- County: string (nullable = true)\n |-- State: string (nullable = true)\n |-- Nearest Town: string (nullable = true)\n |-- Distance to Town(mi): string (nullable = true)\n\n"}]},"apps":[],"jobName":"paragraph_1510187038739_-676036431","id":"20171109-002358_1073971632","dateCreated":"2017-11-09T00:23:58+0000","dateStarted":"2017-11-10T07:07:22+0000","dateFinished":"2017-11-10T07:07:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4351"},{"title":"","text":"%pyspark \nprint(\"%html

There are \" + str(len(df.index)) + \" fires currently active!

\")","user":"anonymous","dateUpdated":"2017-11-10T07:06:50+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"python","editOnDblClick":false},"editorMode":"ace/mode/python","title":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

There are 88 fires currently active!

\n"}]},"apps":[],"jobName":"paragraph_1510187189233_-807373723","id":"20171109-002629_2093508410","dateCreated":"2017-11-09T00:26:29+0000","dateStarted":"2017-11-10T07:06:16+0000","dateFinished":"2017-11-10T07:06:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4352"},{"title":"Active Fires by State","text":"%sql \nselect count(`Land Cover`), state from active_fires group by state order by count(`Land Cover`) desc limit 8","user":"anonymous","dateUpdated":"2017-11-10T06:52:24+0000","config":{"colWidth":12,"enabled":true,"results":{"0":{"graph":{"mode":"multiBarChart","height":300,"optionOpen":false,"setting":{"multiBarChart":{}},"commonSetting":{},"keys":[{"name":"state","index":1,"aggr":"sum"}],"groups":[],"values":[{"name":"count(Land Cover)","index":0,"aggr":"sum"}]},"helium":{}}},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/sql","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"count(Land Cover)\tstate\n37\t'Arizona'\n16\t'Florida'\n12\t'California'\n12\t'Oregon'\n2\t'Indiana'\n2\t'Kansas'\n2\t'New Mexico'\n1\t'Idaho'\n"}]},"apps":[],"jobName":"paragraph_1510295837277_-1077660899","id":"20171110-063717_362478632","dateCreated":"2017-11-10T06:37:17+0000","dateStarted":"2017-11-10T06:46:00+0000","dateFinished":"2017-11-10T06:46:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4353"},{"title":"Cumulative Fire Danger","text":"%sql\nselect `Fire Danger`, `Land Cover` from active_fires where `Fire Danger` not like '%N-A%'\n","user":"anonymous","dateUpdated":"2017-11-10T06:52:14+0000","config":{"colWidth":12,"enabled":true,"results":{"0":{"graph":{"mode":"pieChart","height":300,"optionOpen":false},"helium":{}}},"editorSetting":{"language":"sql"},"editorMode":"ace/mode/sql","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"Fire Danger\tLand Cover\n'Moderate'\t'Cropland/Natural Vegetation Mosaic'\n'Moderate'\t'Cropland/Natural Vegetation Mosaic'\n'Moderate'\t'Cropland/Natural Vegetation Mosaic'\n'Moderate'\t'Cropland/Natural Vegetation Mosaic'\n'High'\t'Urban and Built-Up'\n'Moderate'\t'Croplands'\n'Low'\t'Croplands'\n'Moderate'\t'Cropland/Natural Vegetation Mosaic'\n'Moderate'\t'Cropland/Natural Vegetation Mosaic'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Savannas'\n'Moderate'\t'Woody Savannas'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Mixed Forests'\n'Low'\t'Croplands'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Low'\t'Croplands'\n'Low'\t'Croplands'\n'Low'\t'Open Shrublands'\n'Low'\t'Grasslands'\n'Low'\t'Woody Savannas'\n'Low'\t'Open Shrublands'\n'Low'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Croplands'\n'Moderate'\t'Croplands'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Grasslands'\n'Moderate'\t'Woody Savannas'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Croplands'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Woody Savannas'\n'Moderate'\t'Croplands'\n'Moderate'\t'Croplands'\n'Moderate'\t'Woody Savannas'\n'Low'\t'Croplands'\n'Moderate'\t'Deciduous Broadleaf Forest'\n'Moderate'\t'Grasslands'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Low'\t'Woody Savannas'\n'Low'\t'Woody Savannas'\n'Moderate'\t'Open Shrublands'\n'Low'\t'Mixed Forests'\n'Low'\t'Evergreen Needleleaf Forest'\n'Low'\t'Evergreen Needleleaf Forest'\n'Low'\t'Evergreen Needleleaf Forest'\n'Low'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Croplands'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Grasslands'\n'Moderate'\t'Grasslands'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Open Shrublands'\n'Moderate'\t'Evergreen Needleleaf Forest'\n'Low'\t'Grasslands'\n"}]},"apps":[],"jobName":"paragraph_1510296377103_288563832","id":"20171110-064617_1839772878","dateCreated":"2017-11-10T06:46:17+0000","dateStarted":"2017-11-10T06:51:12+0000","dateFinished":"2017-11-10T06:51:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4354"},{"title":"Initialize streams","text":"%sh\n# remove old streams\nssh nodeb pkill websocketd\nmaprcli stream delete -path /user/mapr/ml_input\nmaprcli stream delete -path /user/mapr/ml_output\n# restart streams\nmaprcli stream create -path /user/mapr/ml_input -produceperm p -consumeperm p -topicperm p -ttl 604800\nmaprcli stream topic create -path /user/mapr/ml_input -topic requester001\n# ttl 604800 is 1 week\nmaprcli stream create -path /user/mapr/ml_output -produceperm p -consumeperm p -topicperm p -ttl 604800\nmaprcli stream topic create -path /user/mapr/ml_output -topic kmeans001","user":"anonymous","dateUpdated":"2017-11-10T07:35:06+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"sh","editOnDblClick":false},"editorMode":"ace/mode/sh","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"apps":[],"jobName":"paragraph_1510298528569_-1231883388","id":"20171110-072208_814620619","dateCreated":"2017-11-10T07:22:08+0000","dateStarted":"2017-11-10T07:35:06+0000","dateFinished":"2017-11-10T07:35:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4355"},{"title":"Start the \"Spark\" notification task","text":"%sh /opt/mapr/spark/spark-2.1.0/bin/spark-submit --class com.sparkkafka.fire.SparkKafkaConsumerProducer --master local[2] ~/mapr-sparkml-streaming-fires-1.0-jar-with-dependencies.jar /user/mapr/data/save_fire_model /user/mapr/ml_input:requester001 /user/mapr/ml_output:kmeans001 \n","user":"anonymous","dateUpdated":"2017-11-10T08:10:31+0000","config":{"colWidth":12,"enabled":false,"results":{},"editorSetting":{"language":"sh","editOnDblClick":false},"editorMode":"ace/mode/sh","title":true,"tableHide":true},"settings":{"params":{},"forms":{}},"apps":[],"jobName":"paragraph_1510273895542_187041020","id":"20171110-003135_94995843","dateCreated":"2017-11-10T00:31:35+0000","dateStarted":"2017-11-10T07:54:19+0000","dateFinished":"2017-11-10T07:55:20+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"$$hashKey":"object:4356"},{"title":"Identify which fire stations (centroid) should respond to active fires","text":"%pyspark \nimport websocket\nwebsocket.enableTrace(False)\nws = create_connection(\"ws://10.1.1.15:3433/ml_input_stream.sh\")\nfor index, row in df.iterrows():\n ws.send(row['Latitude(WGS84)']+\",\"+row['Longitude(WGS84)'])\n print(row['Latitude(WGS84)']+\",\"+row['Longitude(WGS84)'])\n ws.recv()\nws.close()","user":"anonymous","dateUpdated":"2017-11-10T08:10:40+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"python"},"editorMode":"ace/mode/python","title":true,"tableHide":false,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"ERROR","msg":[{"type":"TEXT","data":"29.725,-82.967\n27.571,-82.075\n27.286,-81.764\n26.854,-81.750\n41.630,-87.146\n27.580,-82.077\n27.413,-81.409\n29.723,-82.978\n41.363,-84.925\n29.045,-81.353\n42.297,-83.155\n29.969,-85.389\n34.625,-111.159\n34.634,-111.161\n34.622,-111.165\n33.591,-116.233\n34.351,-110.945\n34.637,-111.155\n34.363,-110.942\n33.630,-114.660\n35.219,-111.708\n36.677,-119.886\n36.640,-119.936\n36.096,-120.139\n42.114,-121.399\n42.118,-121.392\n44.961,-116.356\n42.669,-121.113\n35.581,-119.241\n35.579,-119.230\n35.439,-111.689\n35.435,-111.670\n35.428,-111.693\n35.424,-111.674\n35.450,-111.686\n"},{"type":"TEXT","data":"Traceback (most recent call last):\n File \"/tmp/zeppelin_pyspark-1662240632441934434.py\", line 367, in \n raise Exception(traceback.format_exc())\nException: Traceback (most recent call last):\n File \"/tmp/zeppelin_pyspark-1662240632441934434.py\", line 355, in \n exec(code, _zcUserQueryNameSpace)\n File \"\", line 7, in \n File \"/usr/local/lib/python2.7/dist-packages/websocket/_core.py\", line 293, in recv\n opcode, data = self.recv_data()\n File \"/usr/local/lib/python2.7/dist-packages/websocket/_core.py\", line 310, in recv_data\n opcode, frame = self.recv_data_frame(control_frame)\n File \"/usr/local/lib/python2.7/dist-packages/websocket/_core.py\", line 323, in recv_data_frame\n frame = self.recv_frame()\n File \"/usr/local/lib/python2.7/dist-packages/websocket/_core.py\", line 357, in recv_frame\n return self.frame_buffer.recv_frame()\n File \"/usr/local/lib/python2.7/dist-packages/websocket/_abnf.py\", line 340, in recv_frame\n self.recv_header()\n File \"/usr/local/lib/python2.7/dist-packages/websocket/_abnf.py\", line 288, in recv_header\n header = self.recv_strict(2)\n File \"/usr/local/lib/python2.7/dist-packages/websocket/_abnf.py\", line 375, in recv_strict\n bytes_ = self.recv(min(16384, shortage))\n File \"/usr/local/lib/python2.7/dist-packages/websocket/_core.py\", line 427, in _recv\n return recv(self.sock, bufsize)\n File \"/usr/local/lib/python2.7/dist-packages/websocket/_socket.py\", line 93, in recv\n \"Connection is already closed.\")\nWebSocketConnectionClosedException: Connection is already closed.\n\n"}]},"apps":[],"jobName":"paragraph_1510272763158_-1908338717","id":"20171110-001243_1476311896","dateCreated":"2017-11-10T00:12:43+0000","dateStarted":"2017-11-10T08:10:40+0000","dateFinished":"2017-11-10T08:13:20+0000","status":"ERROR","progressUpdateIntervalMs":500,"$$hashKey":"object:4357"},{"title":"Run this to monitor streams","text":"%sh\n# start a websocket stream interface for monitoring\nssh nodeb \"websocketd --port=3433 --dir=. --devconsole\" &\n","user":"anonymous","dateUpdated":"2017-11-10T07:44:36+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"sh","editOnDblClick":false},"editorMode":"ace/mode/sh","title":true,"tableHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"ERROR","msg":[{"type":"TEXT","data":"Fri, 10 Nov 2017 07:42:36 +0000 | INFO | server | | Serving from directory : /home/mapr\nFri, 10 Nov 2017 07:42:36 +0000 | INFO | server | | Starting WebSocket server : ws://nodeb107:3433/\nFri, 10 Nov 2017 07:42:36 +0000 | INFO | server | | Developer console enabled : http://nodeb107:3433/\n"},{"type":"TEXT","data":"ExitValue: 255"}]},"apps":[],"jobName":"paragraph_1510299309684_-315296016","id":"20171110-073509_233231405","dateCreated":"2017-11-10T07:35:09+0000","dateStarted":"2017-11-10T07:42:35+0000","dateFinished":"2017-11-10T07:42:39+0000","status":"ERROR","progressUpdateIntervalMs":500,"$$hashKey":"object:4358"},{"text":"%md \n### Click [here](http://10.1.1.15:3433/ml_input_stream.sh) to watch the fire notifications stream (ML input).","user":"anonymous","dateUpdated":"2017-11-10T07:45:31+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"markdown","editOnDblClick":true},"editorMode":"ace/mode/markdown","editorHide":true,"tableHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n

Click here to watch the fire notifications stream (ML input).

\n
"}]},"apps":[],"jobName":"paragraph_1510273747383_-423402243","id":"20171110-002907_888967422","dateCreated":"2017-11-10T00:29:07+0000","dateStarted":"2017-11-10T07:45:31+0000","dateFinished":"2017-11-10T07:45:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4359"},{"text":"%md \n### Click [here](http://10.1.1.15:3433/ml_output_stream.sh) to watch the fire station alert stream (ML output).","user":"anonymous","dateUpdated":"2017-11-10T07:45:25+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"markdown","editOnDblClick":true},"editorMode":"ace/mode/markdown","editorHide":true,"tableHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n

Click here to watch the fire station alert stream (ML output).

\n
"}]},"apps":[],"jobName":"paragraph_1510289966136_-638443980","id":"20171110-045926_1106373116","dateCreated":"2017-11-10T04:59:26+0000","dateStarted":"2017-11-10T07:45:25+0000","dateFinished":"2017-11-10T07:45:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4360"},{"title":"Backup training data and model files","text":"%sh\nmaprcli volume snapshot remove -volume mapr_home -snapshotname USFS_Experiment \nmaprcli volume snapshot create -cluster my.cluster.com -snapshotname USFS_Experiment -volume mapr_home\nls -la /mapr/my.cluster.com/user/mapr/.snapshot/","user":"anonymous","dateUpdated":"2017-11-10T07:55:41+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"sh","editOnDblClick":false},"editorMode":"ace/mode/sh","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"total 3\ndrwxr-xr-x 5 root root 3 Nov 10 07:55 .\ndrwxr-xr-x 9 mapr mapr 14 Nov 10 07:35 ..\ndrwxr-xr-x 9 mapr mapr 14 Nov 10 07:35 USFS_Experiment\ndrwxr-xr-x 9 mapr mapr 14 Nov 9 23:50 USFS_Experiment-20171110052951\ndrwxr-xr-x 9 mapr mapr 14 Nov 9 23:50 USFS_Experiment-20171110053003\n"}]},"apps":[],"jobName":"paragraph_1510187254604_-1265366121","id":"20171109-002734_2068244197","dateCreated":"2017-11-09T00:27:34+0000","dateStarted":"2017-11-10T07:55:41+0000","dateFinished":"2017-11-10T07:55:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4361"},{"text":"\n","user":"anonymous","dateUpdated":"2017-10-26T05:05:44+0000","config":{"colWidth":12,"enabled":true,"results":{},"editorSetting":{"language":"scala","editOnDblClick":true},"editorMode":"ace/mode/scala","editorHide":true,"tableHide":false},"settings":{"params":{},"forms":{}},"apps":[],"jobName":"paragraph_1508825011003_1676877891","id":"20171024-060331_621482076","dateCreated":"2017-10-24T06:03:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"$$hashKey":"object:4362"}],"name":"Forest Fire Prediction","id":"2CVSXJJB3","angularObjects":{"2CXZ1QT8R:shared_process":[],"2CUH8BXP5:shared_process":[],"2CUZXQWF1:shared_process":[],"2CWU25SS9:shared_process":[],"2CXUFZC4T:shared_process":[],"2CVYJFM5K:shared_process":[],"2CWKSUH98:shared_process":[],"2CXCVRGUS:shared_process":[],"2CUBRK9E4:shared_process":[],"2CY25R41V:shared_process":[],"2CXQJBSD8:shared_process":[],"2CX4FDY4Y:shared_process":[],"2CVMHG4NV:shared_process":[],"2CUH7FA27:shared_process":[],"2CV9PPACB:shared_process":[],"2CV629DUQ:shared_process":[],"2CXJN9J7P:shared_process":[],"2CVCM9YPF:shared_process":[{"name":"centroid","object":[{"values":[42.680210355177884,-111.59725937968977]},{"values":[43.46119708737863,-123.4865427184466]},{"values":[42.442929411764744,-117.53071372549019]},{"values":[46.0875555350554,-117.83899317343179]},{"values":[45.41602265641227,-114.0714599875284]},{"values":[47.55513630540607,-113.53880297207272]},{"values":[48.053261769911444,-120.0575677876107]},{"values":[44.56749924698794,-120.14084864457843]},{"values":[44.82837657623227,-115.5686400458541]},{"values":[47.19294624505929,-116.3193355731225]},{"values":[46.0001227998363,-121.42910908718788]},{"values":[44.8225060851927,-121.18407758620698]},{"values":[48.33468846079004,-118.85384316014812]},{"values":[42.190387077294645,-120.67088979468606]},{"values":[44.02496713615028,-110.15051525821596]},{"values":[48.84425513196482,-122.80656598240468]},{"values":[42.31075105485234,-122.05234358047026]},{"values":[47.551169991326965,-110.58471465741545]},{"values":[48.366605830765494,-119.25822801611778]},{"values":[48.64446906398731,-117.12346694870438]},{"values":[43.585575029080985,-114.48100155098888]},{"values":[44.658283501161904,-121.77650561580175]},{"values":[44.2141452775774,-118.80088211968264]},{"values":[44.55109049773757,-111.99945135746607]},{"values":[44.18748645226641,-115.5765583692076]},{"values":[46.32117078916372,-123.24499646643106]},{"values":[42.52315782286375,-123.75475790089729]},{"values":[47.83102030838668,-113.02192553591584]},{"values":[47.88128612303293,-115.86531330472098]},{"values":[47.12880022363031,-120.65368169958985]},{"values":[49.058754511120405,-116.16455518254297]},{"values":[46.380826304691595,-113.73693647865049]},{"values":[42.44345835543764,-115.48029708222808]},{"values":[48.59209729418539,-120.00220245634236]},{"values":[45.832998529411775,-119.65369852941178]},{"values":[42.80554616087751,-118.89474588665446]},{"values":[45.599176134333675,-116.27001750625217]},{"values":[48.933861839804116,-118.36850682056688]},{"values":[49.048490677134495,-114.68882433758593]},{"values":[46.53233677991136,-120.07666395864108]},{"values":[46.81406035665295,-111.96022908093278]},{"values":[47.1773843137255,-117.76145490196078]},{"values":[43.81896350364965,-111.10441423357665]},{"values":[43.16925459375698,-122.42875027673234]},{"values":[44.98837316293926,-117.31802939297128]},{"values":[45.092147323173165,-116.45970379054316]},{"values":[43.94497546728972,-117.09796144859811]},{"values":[47.73799279279282,-111.90307207207206]},{"values":[46.80794588449294,-115.59445702592082]},{"values":[43.30027756410261,-114.9767320512819]},{"values":[46.09602029064988,-115.33729366602705]},{"values":[48.499308211473554,-113.3735359955005]},{"values":[44.98750756756764,-118.83719081081081]},{"values":[44.40895686591275,-114.98714361874055]},{"values":[47.24852644492911,-116.94616739367501]},{"values":[45.91029123173278,-111.63577557411271]},{"values":[48.003583602584705,-118.1010024232631]},{"values":[47.21107859888938,-112.88779026057243]},{"values":[45.47023435063486,-115.44834172421476]},{"values":[43.238007769145376,-116.86420588235295]},{"values":[46.941102733270526,-114.56711545711585]},{"values":[46.65701529902643,-117.49917941585535]},{"values":[45.94805246913578,-114.46334876543213]},{"values":[48.68818710324091,-119.61178349482135]},{"values":[48.989644295302,-120.55701135776974]},{"values":[46.945085929108494,-119.16613748657356]},{"values":[44.985136440391756,-110.62700236406614]},{"values":[43.04288829787237,-120.98841445035451]},{"values":[44.484553467271546,-122.90281594296823]},{"values":[48.713811594202916,-110.6999927536232]},{"values":[44.41465921945706,-117.99498783936656]},{"values":[47.60024606580833,-120.80637696709574]},{"values":[43.30823627998692,-118.22460795267843]},{"values":[45.525432050701745,-114.76495699411534]},{"values":[45.06997001303781,-123.51793546284232]},{"values":[46.03363036649214,-118.63290209424083]},{"values":[42.411339405560874,-113.01552540747844]},{"values":[47.353657579062165,-122.92253217011991]},{"values":[42.53206368330465,-122.91702237521517]},{"values":[46.33238826102806,-116.22532664965372]},{"values":[48.13757210578842,-120.63054391217578]},{"values":[43.42515586116568,-112.30286116568435]},{"values":[47.41553032015065,-120.28863050847455]},{"values":[43.98151189785259,-116.05173766686019]},{"values":[44.031103838245336,-119.47318060315274]},{"values":[47.7202422171602,-114.89755618830677]},{"values":[43.36918918918921,-110.43353443766351]},{"values":[42.23112643678158,-112.30654844006571]},{"values":[48.53467159450896,-115.09414625131996]},{"values":[42.19413026052105,-118.14942525050081]},{"values":[45.980087702573876,-116.88747473784561]},{"values":[46.2978552056652,-114.7551792978756]},{"values":[43.361500727096455,-115.6408245273873]},{"values":[42.509375226586116,-110.5823160120845]},{"values":[44.030212504652035,-121.63664123557874]},{"values":[45.64626304464767,-120.59849650349648]},{"values":[43.691489661882756,-115.3556038676723]},{"values":[44.70506696208765,-114.67740915805025]},{"values":[48.59285780346821,-114.0871531791909]},{"values":[42.57220040180812,-114.04146408839789]}],"noteId":"2CVSXJJB3"}],"2CXS5UPP9:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}}