Hi i having a issue regrading click data on graph…please the below code…
import dash
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input, Output, State
import json
import pyspark
import numpy as np
import pandas as pd
from pyspark import SparkContext,SparkConf
from pyspark.sql import SparkSession
from pyspark.sql import Row
from pyspark.sql.functions import substring,length
from pyspark.sql.functions import col,when
from pyspark.sql.functions import to_timestamp
from pyspark.sql.functions import hour
from pyspark.sql import HiveContext
from pyspark.sql.functions import dayofmonth
from pyspark.sql.functions import month
import statistics
from datetime import datetime
from time import mktime
import plotly.plotly as py
import plotly.graph_objs as go
import time
global hive_context
global sc
external_stylesheets = [
"https://unpkg.com/tachyons@4.10.0/css/tachyons.min.css"]
app = dash.Dash(name, external_stylesheets=external_stylesheets)
app.layout =html.Div([
html.Div([dcc.Input(id='input-box', type='text',placeholder='yyy-mm-dd'),
dcc.Input(id='input-box1', type='text',placeholder='start time HH:MM:SS'),
dcc.Input(id='input-box2', type='text',placeholder='end time HH:MM:SS')]),
html.Div([html.Button('Submit', id='button')],className="db center mv4 ph2 pv1"),
dcc.Loading(html.Div(id='output-container-button',),type='graph', fullscreen=False)
])
def start1():
conf=SparkConf().setAppName(“pyspark”).set(“spark.scheduler.mode”,“FAIR”)
#conf=conf.set(“spark.scheduler.mode”,“FAIR”)
#conf.set(“spark.scheduler.allocation.file”,"/home/devloper/spark/conf/fair.xml")
global sc
sc=SparkContext(conf=conf)
#sc.setLocalProperty(“spark.scheduler.pool”,“production”)
global hive_context
hive_context=HiveContext(sc)
@app.callback(
dash.dependencies.Output('output-container-button','children'),
[dash.dependencies.Input('button', 'n_clicks')],
[dash.dependencies.State('input-box', 'value'),
dash.dependencies.State('input-box1', 'value'),dash.dependencies.State('input-box2', 'value')])
def update_output(n_clicks,value,value1,value2):
print(value)
if value!=None and value1!=None and value2!=None:
value=str(value)
value1=str(value1)
value2=str(value2)
starttime=value+’ '+value1
endtime=value+’ '+value2
start1()
dd1=hive_context.sql(“select sourceaddress,count(sourceaddress) as src,hour(eventtime) as ho from default.fullandfinal where eventtime between ‘%s’ and ‘%s’ group by sourceaddress,hour(eventtime) order by sourceaddress,ho” %(starttime,endtime))
dd2=dd1.toPandas()
sc.stop()
dd3=dd2.pivot(index=‘sourceaddress’,columns=‘ho’,values=‘src’).fillna(0)
dd4=dd3.apply(pd.Series.describe,axis=1)
dd4[‘IRQ’]=dd4[‘75%’].sub(dd4[‘25%’])
dd4[‘LL’]=dd4[‘25%’]-(1.5*dd4[‘IRQ’])
dd4[‘UL’]=dd4[‘75%’]+(1.5*dd4[‘IRQ’])
dd5=dd4.reset_index()
dd5=dd5.set_index(‘sourceaddress’)
dd6=pd.merge(dd3,dd5,left_index=True,right_index=True)
dd7=dd6.iloc[:,0:-11]
m1=dd7.gt(dd6[‘LL’],axis=0)
m2=dd7.lt(dd6[‘UL’],axis=0)
dd6[‘Result’] = dd7.mask(m1 & m2).apply(lambda x: x.dropna().astype(int).tolist(), axis=1)
import numpy as np
l = lambda x: sum([np.std([x[‘50%’], i], ddof=1) for i in x[‘Result’]])
dd6[‘std1’] = dd6.apply(l, 1)
dd7=dd6.sort_values([‘std1’],ascending=False)
dd8=dd7.iloc[:,0:-13].head(10)
d1=dd8[:1].values.flatten()
d2=dd8[1:2].values.flatten()
d3=dd8[2:3].values.flatten()
d4=dd8[3:4].values.flatten()
d5=dd8[4:5].values.flatten()
d6=dd8[5:6].values.flatten()
d7=dd8[6:7].values.flatten()
d8=dd8[7:8].values.flatten()
d9=dd8[8:9].values.flatten()
d10=dd8[9:10].values.flatten()
t=dd8.index.values.tolist()
trace0 = go.Box(y=d1,name=t[0])
trace1 = go.Box(y=d2,name=t[1])
trace2 = go.Box(y=d3,name=t[2])
trace3 = go.Box(y=d4,name=t[3])
trace4 = go.Box(y=d5,name=t[4])
trace5 = go.Box(y=d6,name=t[5])
trace6 = go.Box(y=d7,name=t[6])
trace7 = go.Box(y=d8,name=t[7])
trace8 = go.Box(y=d9,name=t[8])
trace9 = go.Box(y=d10,name=t[9])
data=[trace0,trace1,trace2,trace3,trace4,trace5,trace6,trace7,trace8,trace9]
print(data)
return dcc.Graph(id=‘xy’,figure={‘data’:data,‘layout’:go.Layout(title=‘Outlier-Graph’)})
if name == ‘main’:
app.run_server(debug=True)