You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@zeppelin.apache.org by ashish rawat <dc...@gmail.com> on 2016/07/05 05:14:30 UTC

Re: Notebook copy per session/socket

+ user list, hoping someone can help here!

On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dc...@gmail.com> wrote:

> Hi everyone,
>
> I am trying to implement a functionality in Zeppelin, where a notebook
> copy can be kept with each websocket associated with that notebook. This
> way the notebook would be opened in read-only mode and changes made by one
> connection would not be visible to the other connections over the same
> notebook. I would additionally disable the note.persist in this case.
>
> I explored the code a little and found that NotebookServer is keeping a
> map of notebookIds to list of sockets. Further, it seems that any message
> to a specific notebook gets broadcasted to the complete list of sockets
> associated with that list.
>
> My initial idea was to just maintain a notebook copy for each websocket,
> but now this is looking a little complex, since it seems that for every
> job, I would also need to maintain the websocket which triggered it,
> resulting in changes across the codebase.
>
> Can someone help me out in how to approach this change in the cleanest and
> fastest way.
>
> Regards,
> Ashish
>
> PS: The motivation for making this change is mentioned in one of my
> earlier questions "Zeppelin multi-user dashboards" on the users list.
>

Re: Notebook copy per session/socket

Posted by ashish rawat <dc...@gmail.com>.
That would be awesome!

I have added the comment in the pull request also. Can't wait to try it out
with your changes.

Regards,
Ashish

On Wed, Jul 6, 2016 at 11:06 AM, Khalid Huseynov <kh...@nflabs.com>
wrote:

> Thanks for the question Ashish,
>
> Actually it's a good feedback, and one of the reasons
> https://github.com/apache/zeppelin/pull/1105 was proposed is to facilitate
> the case of using note as a dashboard without intervening with storage and
> other notebooks. I'll consider this feedback in the PR then and possibly
> you can go ahead and try it and leave more feedback there.
>
> Best,
> Khalid.
>
> On Wed, Jul 6, 2016 at 4:06 AM, ashish rawat <dc...@gmail.com> wrote:
>
> > Thanks Moon and Mohit.
> >
> > Moon,
> >
> > It's not clear to me if offline mode would allow changing input controls
> > (dropdowns/input box etc) and view the new result. Our requirement is
> for a
> > dashboard mode, where multiple users can play with the data using the
> input
> > controls but don't interfere with each other's work. This is a very basic
> > requirement for making Dashboards using Zeppelin.
> >
> > I think isolating a notebook copy in a web socket/user session (in
> > Dashboard mode), can achieve the desired results.
> >
> > Mohit,
> >
> > I am avoiding creating multiple physical copies, since it looks difficult
> > to maintain for an ever increasing set of notebooks and users.
> >
> > Regards,
> > Ashish
> >
> >
> > On Tue, Jul 5, 2016 at 11:16 PM, Mohit Jaggi <mo...@gmail.com>
> wrote:
> >
> >> What if you make a physical copy of the notebook? Then the socket list
> >> will have only one destination. Perhaps you can define a “notebook
> >> template” as follows:
> >>
> >> Z -> Menu -> Create notebook template -> [ define your notebook template
> >> here ]
> >> Z -> Menu -> Create notebook from template -> [ choose the above
> template
> >> ] -> make a physical copy of the template
> >>
> >> If the template changes, the notebook is based on a previous version but
> >> I think that is fine for many use cases.
> >>
> >>
> >> On Jul 4, 2016, at 10:14 PM, ashish rawat <dc...@gmail.com> wrote:
> >>
> >> + user list, hoping someone can help here!
> >>
> >> On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dc...@gmail.com>
> >> wrote:
> >>
> >>> Hi everyone,
> >>>
> >>> I am trying to implement a functionality in Zeppelin, where a notebook
> >>> copy can be kept with each websocket associated with that notebook.
> This
> >>> way the notebook would be opened in read-only mode and changes made by
> one
> >>> connection would not be visible to the other connections over the same
> >>> notebook. I would additionally disable the note.persist in this case.
> >>>
> >>> I explored the code a little and found that NotebookServer is keeping a
> >>> map of notebookIds to list of sockets. Further, it seems that any
> message
> >>> to a specific notebook gets broadcasted to the complete list of sockets
> >>> associated with that list.
> >>>
> >>> My initial idea was to just maintain a notebook copy for each
> websocket,
> >>> but now this is looking a little complex, since it seems that for every
> >>> job, I would also need to maintain the websocket which triggered it,
> >>> resulting in changes across the codebase.
> >>>
> >>> Can someone help me out in how to approach this change in the cleanest
> >>> and fastest way.
> >>>
> >>> Regards,
> >>> Ashish
> >>>
> >>> PS: The motivation for making this change is mentioned in one of my
> >>> earlier questions "Zeppelin multi-user dashboards" on the users list.
> >>>
> >>
> >>
> >>
> >
>

Re: Notebook copy per session/socket

Posted by ashish rawat <dc...@gmail.com>.
That would be awesome!

I have added the comment in the pull request also. Can't wait to try it out
with your changes.

Regards,
Ashish

On Wed, Jul 6, 2016 at 11:06 AM, Khalid Huseynov <kh...@nflabs.com>
wrote:

> Thanks for the question Ashish,
>
> Actually it's a good feedback, and one of the reasons
> https://github.com/apache/zeppelin/pull/1105 was proposed is to facilitate
> the case of using note as a dashboard without intervening with storage and
> other notebooks. I'll consider this feedback in the PR then and possibly
> you can go ahead and try it and leave more feedback there.
>
> Best,
> Khalid.
>
> On Wed, Jul 6, 2016 at 4:06 AM, ashish rawat <dc...@gmail.com> wrote:
>
> > Thanks Moon and Mohit.
> >
> > Moon,
> >
> > It's not clear to me if offline mode would allow changing input controls
> > (dropdowns/input box etc) and view the new result. Our requirement is
> for a
> > dashboard mode, where multiple users can play with the data using the
> input
> > controls but don't interfere with each other's work. This is a very basic
> > requirement for making Dashboards using Zeppelin.
> >
> > I think isolating a notebook copy in a web socket/user session (in
> > Dashboard mode), can achieve the desired results.
> >
> > Mohit,
> >
> > I am avoiding creating multiple physical copies, since it looks difficult
> > to maintain for an ever increasing set of notebooks and users.
> >
> > Regards,
> > Ashish
> >
> >
> > On Tue, Jul 5, 2016 at 11:16 PM, Mohit Jaggi <mo...@gmail.com>
> wrote:
> >
> >> What if you make a physical copy of the notebook? Then the socket list
> >> will have only one destination. Perhaps you can define a “notebook
> >> template” as follows:
> >>
> >> Z -> Menu -> Create notebook template -> [ define your notebook template
> >> here ]
> >> Z -> Menu -> Create notebook from template -> [ choose the above
> template
> >> ] -> make a physical copy of the template
> >>
> >> If the template changes, the notebook is based on a previous version but
> >> I think that is fine for many use cases.
> >>
> >>
> >> On Jul 4, 2016, at 10:14 PM, ashish rawat <dc...@gmail.com> wrote:
> >>
> >> + user list, hoping someone can help here!
> >>
> >> On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dc...@gmail.com>
> >> wrote:
> >>
> >>> Hi everyone,
> >>>
> >>> I am trying to implement a functionality in Zeppelin, where a notebook
> >>> copy can be kept with each websocket associated with that notebook.
> This
> >>> way the notebook would be opened in read-only mode and changes made by
> one
> >>> connection would not be visible to the other connections over the same
> >>> notebook. I would additionally disable the note.persist in this case.
> >>>
> >>> I explored the code a little and found that NotebookServer is keeping a
> >>> map of notebookIds to list of sockets. Further, it seems that any
> message
> >>> to a specific notebook gets broadcasted to the complete list of sockets
> >>> associated with that list.
> >>>
> >>> My initial idea was to just maintain a notebook copy for each
> websocket,
> >>> but now this is looking a little complex, since it seems that for every
> >>> job, I would also need to maintain the websocket which triggered it,
> >>> resulting in changes across the codebase.
> >>>
> >>> Can someone help me out in how to approach this change in the cleanest
> >>> and fastest way.
> >>>
> >>> Regards,
> >>> Ashish
> >>>
> >>> PS: The motivation for making this change is mentioned in one of my
> >>> earlier questions "Zeppelin multi-user dashboards" on the users list.
> >>>
> >>
> >>
> >>
> >
>

Re: Notebook copy per session/socket

Posted by Khalid Huseynov <kh...@nflabs.com>.
Thanks for the question Ashish,

Actually it's a good feedback, and one of the reasons
https://github.com/apache/zeppelin/pull/1105 was proposed is to facilitate
the case of using note as a dashboard without intervening with storage and
other notebooks. I'll consider this feedback in the PR then and possibly
you can go ahead and try it and leave more feedback there.

Best,
Khalid.

On Wed, Jul 6, 2016 at 4:06 AM, ashish rawat <dc...@gmail.com> wrote:

> Thanks Moon and Mohit.
>
> Moon,
>
> It's not clear to me if offline mode would allow changing input controls
> (dropdowns/input box etc) and view the new result. Our requirement is for a
> dashboard mode, where multiple users can play with the data using the input
> controls but don't interfere with each other's work. This is a very basic
> requirement for making Dashboards using Zeppelin.
>
> I think isolating a notebook copy in a web socket/user session (in
> Dashboard mode), can achieve the desired results.
>
> Mohit,
>
> I am avoiding creating multiple physical copies, since it looks difficult
> to maintain for an ever increasing set of notebooks and users.
>
> Regards,
> Ashish
>
>
> On Tue, Jul 5, 2016 at 11:16 PM, Mohit Jaggi <mo...@gmail.com> wrote:
>
>> What if you make a physical copy of the notebook? Then the socket list
>> will have only one destination. Perhaps you can define a “notebook
>> template” as follows:
>>
>> Z -> Menu -> Create notebook template -> [ define your notebook template
>> here ]
>> Z -> Menu -> Create notebook from template -> [ choose the above template
>> ] -> make a physical copy of the template
>>
>> If the template changes, the notebook is based on a previous version but
>> I think that is fine for many use cases.
>>
>>
>> On Jul 4, 2016, at 10:14 PM, ashish rawat <dc...@gmail.com> wrote:
>>
>> + user list, hoping someone can help here!
>>
>> On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dc...@gmail.com>
>> wrote:
>>
>>> Hi everyone,
>>>
>>> I am trying to implement a functionality in Zeppelin, where a notebook
>>> copy can be kept with each websocket associated with that notebook. This
>>> way the notebook would be opened in read-only mode and changes made by one
>>> connection would not be visible to the other connections over the same
>>> notebook. I would additionally disable the note.persist in this case.
>>>
>>> I explored the code a little and found that NotebookServer is keeping a
>>> map of notebookIds to list of sockets. Further, it seems that any message
>>> to a specific notebook gets broadcasted to the complete list of sockets
>>> associated with that list.
>>>
>>> My initial idea was to just maintain a notebook copy for each websocket,
>>> but now this is looking a little complex, since it seems that for every
>>> job, I would also need to maintain the websocket which triggered it,
>>> resulting in changes across the codebase.
>>>
>>> Can someone help me out in how to approach this change in the cleanest
>>> and fastest way.
>>>
>>> Regards,
>>> Ashish
>>>
>>> PS: The motivation for making this change is mentioned in one of my
>>> earlier questions "Zeppelin multi-user dashboards" on the users list.
>>>
>>
>>
>>
>

Re: Notebook copy per session/socket

Posted by Khalid Huseynov <kh...@nflabs.com>.
Thanks for the question Ashish,

Actually it's a good feedback, and one of the reasons
https://github.com/apache/zeppelin/pull/1105 was proposed is to facilitate
the case of using note as a dashboard without intervening with storage and
other notebooks. I'll consider this feedback in the PR then and possibly
you can go ahead and try it and leave more feedback there.

Best,
Khalid.

On Wed, Jul 6, 2016 at 4:06 AM, ashish rawat <dc...@gmail.com> wrote:

> Thanks Moon and Mohit.
>
> Moon,
>
> It's not clear to me if offline mode would allow changing input controls
> (dropdowns/input box etc) and view the new result. Our requirement is for a
> dashboard mode, where multiple users can play with the data using the input
> controls but don't interfere with each other's work. This is a very basic
> requirement for making Dashboards using Zeppelin.
>
> I think isolating a notebook copy in a web socket/user session (in
> Dashboard mode), can achieve the desired results.
>
> Mohit,
>
> I am avoiding creating multiple physical copies, since it looks difficult
> to maintain for an ever increasing set of notebooks and users.
>
> Regards,
> Ashish
>
>
> On Tue, Jul 5, 2016 at 11:16 PM, Mohit Jaggi <mo...@gmail.com> wrote:
>
>> What if you make a physical copy of the notebook? Then the socket list
>> will have only one destination. Perhaps you can define a “notebook
>> template” as follows:
>>
>> Z -> Menu -> Create notebook template -> [ define your notebook template
>> here ]
>> Z -> Menu -> Create notebook from template -> [ choose the above template
>> ] -> make a physical copy of the template
>>
>> If the template changes, the notebook is based on a previous version but
>> I think that is fine for many use cases.
>>
>>
>> On Jul 4, 2016, at 10:14 PM, ashish rawat <dc...@gmail.com> wrote:
>>
>> + user list, hoping someone can help here!
>>
>> On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dc...@gmail.com>
>> wrote:
>>
>>> Hi everyone,
>>>
>>> I am trying to implement a functionality in Zeppelin, where a notebook
>>> copy can be kept with each websocket associated with that notebook. This
>>> way the notebook would be opened in read-only mode and changes made by one
>>> connection would not be visible to the other connections over the same
>>> notebook. I would additionally disable the note.persist in this case.
>>>
>>> I explored the code a little and found that NotebookServer is keeping a
>>> map of notebookIds to list of sockets. Further, it seems that any message
>>> to a specific notebook gets broadcasted to the complete list of sockets
>>> associated with that list.
>>>
>>> My initial idea was to just maintain a notebook copy for each websocket,
>>> but now this is looking a little complex, since it seems that for every
>>> job, I would also need to maintain the websocket which triggered it,
>>> resulting in changes across the codebase.
>>>
>>> Can someone help me out in how to approach this change in the cleanest
>>> and fastest way.
>>>
>>> Regards,
>>> Ashish
>>>
>>> PS: The motivation for making this change is mentioned in one of my
>>> earlier questions "Zeppelin multi-user dashboards" on the users list.
>>>
>>
>>
>>
>

Re: Notebook copy per session/socket

Posted by ashish rawat <dc...@gmail.com>.
Thanks Moon and Mohit.

Moon,

It's not clear to me if offline mode would allow changing input controls
(dropdowns/input box etc) and view the new result. Our requirement is for a
dashboard mode, where multiple users can play with the data using the input
controls but don't interfere with each other's work. This is a very basic
requirement for making Dashboards using Zeppelin.

I think isolating a notebook copy in a web socket/user session (in
Dashboard mode), can achieve the desired results.

Mohit,

I am avoiding creating multiple physical copies, since it looks difficult
to maintain for an ever increasing set of notebooks and users.

Regards,
Ashish


On Tue, Jul 5, 2016 at 11:16 PM, Mohit Jaggi <mo...@gmail.com> wrote:

> What if you make a physical copy of the notebook? Then the socket list
> will have only one destination. Perhaps you can define a “notebook
> template” as follows:
>
> Z -> Menu -> Create notebook template -> [ define your notebook template
> here ]
> Z -> Menu -> Create notebook from template -> [ choose the above template
> ] -> make a physical copy of the template
>
> If the template changes, the notebook is based on a previous version but I
> think that is fine for many use cases.
>
>
> On Jul 4, 2016, at 10:14 PM, ashish rawat <dc...@gmail.com> wrote:
>
> + user list, hoping someone can help here!
>
> On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dc...@gmail.com> wrote:
>
>> Hi everyone,
>>
>> I am trying to implement a functionality in Zeppelin, where a notebook
>> copy can be kept with each websocket associated with that notebook. This
>> way the notebook would be opened in read-only mode and changes made by one
>> connection would not be visible to the other connections over the same
>> notebook. I would additionally disable the note.persist in this case.
>>
>> I explored the code a little and found that NotebookServer is keeping a
>> map of notebookIds to list of sockets. Further, it seems that any message
>> to a specific notebook gets broadcasted to the complete list of sockets
>> associated with that list.
>>
>> My initial idea was to just maintain a notebook copy for each websocket,
>> but now this is looking a little complex, since it seems that for every
>> job, I would also need to maintain the websocket which triggered it,
>> resulting in changes across the codebase.
>>
>> Can someone help me out in how to approach this change in the cleanest
>> and fastest way.
>>
>> Regards,
>> Ashish
>>
>> PS: The motivation for making this change is mentioned in one of my
>> earlier questions "Zeppelin multi-user dashboards" on the users list.
>>
>
>
>

Re: Notebook copy per session/socket

Posted by ashish rawat <dc...@gmail.com>.
Thanks Moon and Mohit.

Moon,

It's not clear to me if offline mode would allow changing input controls
(dropdowns/input box etc) and view the new result. Our requirement is for a
dashboard mode, where multiple users can play with the data using the input
controls but don't interfere with each other's work. This is a very basic
requirement for making Dashboards using Zeppelin.

I think isolating a notebook copy in a web socket/user session (in
Dashboard mode), can achieve the desired results.

Mohit,

I am avoiding creating multiple physical copies, since it looks difficult
to maintain for an ever increasing set of notebooks and users.

Regards,
Ashish


On Tue, Jul 5, 2016 at 11:16 PM, Mohit Jaggi <mo...@gmail.com> wrote:

> What if you make a physical copy of the notebook? Then the socket list
> will have only one destination. Perhaps you can define a “notebook
> template” as follows:
>
> Z -> Menu -> Create notebook template -> [ define your notebook template
> here ]
> Z -> Menu -> Create notebook from template -> [ choose the above template
> ] -> make a physical copy of the template
>
> If the template changes, the notebook is based on a previous version but I
> think that is fine for many use cases.
>
>
> On Jul 4, 2016, at 10:14 PM, ashish rawat <dc...@gmail.com> wrote:
>
> + user list, hoping someone can help here!
>
> On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dc...@gmail.com> wrote:
>
>> Hi everyone,
>>
>> I am trying to implement a functionality in Zeppelin, where a notebook
>> copy can be kept with each websocket associated with that notebook. This
>> way the notebook would be opened in read-only mode and changes made by one
>> connection would not be visible to the other connections over the same
>> notebook. I would additionally disable the note.persist in this case.
>>
>> I explored the code a little and found that NotebookServer is keeping a
>> map of notebookIds to list of sockets. Further, it seems that any message
>> to a specific notebook gets broadcasted to the complete list of sockets
>> associated with that list.
>>
>> My initial idea was to just maintain a notebook copy for each websocket,
>> but now this is looking a little complex, since it seems that for every
>> job, I would also need to maintain the websocket which triggered it,
>> resulting in changes across the codebase.
>>
>> Can someone help me out in how to approach this change in the cleanest
>> and fastest way.
>>
>> Regards,
>> Ashish
>>
>> PS: The motivation for making this change is mentioned in one of my
>> earlier questions "Zeppelin multi-user dashboards" on the users list.
>>
>
>
>

Re: Notebook copy per session/socket

Posted by Mohit Jaggi <mo...@gmail.com>.
What if you make a physical copy of the notebook? Then the socket list will have only one destination. Perhaps you can define a “notebook template” as follows:

Z -> Menu -> Create notebook template -> [ define your notebook template here ]
Z -> Menu -> Create notebook from template -> [ choose the above template ] -> make a physical copy of the template

If the template changes, the notebook is based on a previous version but I think that is fine for many use cases.

> On Jul 4, 2016, at 10:14 PM, ashish rawat <dc...@gmail.com> wrote:
> 
> + user list, hoping someone can help here!
> 
> On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dceashish@gmail.com <ma...@gmail.com>> wrote:
> Hi everyone,
> 
> I am trying to implement a functionality in Zeppelin, where a notebook copy can be kept with each websocket associated with that notebook. This way the notebook would be opened in read-only mode and changes made by one connection would not be visible to the other connections over the same notebook. I would additionally disable the note.persist in this case.
> 
> I explored the code a little and found that NotebookServer is keeping a map of notebookIds to list of sockets. Further, it seems that any message to a specific notebook gets broadcasted to the complete list of sockets associated with that list.
> 
> My initial idea was to just maintain a notebook copy for each websocket, but now this is looking a little complex, since it seems that for every job, I would also need to maintain the websocket which triggered it, resulting in changes across the codebase.
> 
> Can someone help me out in how to approach this change in the cleanest and fastest way.
> 
> Regards,
> Ashish
> 
> PS: The motivation for making this change is mentioned in one of my earlier questions "Zeppelin multi-user dashboards" on the users list.
> 
> 


Re: Notebook copy per session/socket

Posted by moon soo Lee <mo...@apache.org>.
Hi Ashish,

Will offline mode proposed at https://github.com/apache/zeppelin/pull/1105 help
your case?

Thanks,
moon

On Mon, Jul 4, 2016 at 10:14 PM ashish rawat <dc...@gmail.com> wrote:

> + user list, hoping someone can help here!
>
> On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dc...@gmail.com> wrote:
>
>> Hi everyone,
>>
>> I am trying to implement a functionality in Zeppelin, where a notebook
>> copy can be kept with each websocket associated with that notebook. This
>> way the notebook would be opened in read-only mode and changes made by one
>> connection would not be visible to the other connections over the same
>> notebook. I would additionally disable the note.persist in this case.
>>
>> I explored the code a little and found that NotebookServer is keeping a
>> map of notebookIds to list of sockets. Further, it seems that any message
>> to a specific notebook gets broadcasted to the complete list of sockets
>> associated with that list.
>>
>> My initial idea was to just maintain a notebook copy for each websocket,
>> but now this is looking a little complex, since it seems that for every
>> job, I would also need to maintain the websocket which triggered it,
>> resulting in changes across the codebase.
>>
>> Can someone help me out in how to approach this change in the cleanest
>> and fastest way.
>>
>> Regards,
>> Ashish
>>
>> PS: The motivation for making this change is mentioned in one of my
>> earlier questions "Zeppelin multi-user dashboards" on the users list.
>>
>
>

Re: Notebook copy per session/socket

Posted by Mohit Jaggi <mo...@gmail.com>.
What if you make a physical copy of the notebook? Then the socket list will have only one destination. Perhaps you can define a “notebook template” as follows:

Z -> Menu -> Create notebook template -> [ define your notebook template here ]
Z -> Menu -> Create notebook from template -> [ choose the above template ] -> make a physical copy of the template

If the template changes, the notebook is based on a previous version but I think that is fine for many use cases.

> On Jul 4, 2016, at 10:14 PM, ashish rawat <dc...@gmail.com> wrote:
> 
> + user list, hoping someone can help here!
> 
> On Mon, Jul 4, 2016 at 10:48 PM, ashish rawat <dceashish@gmail.com <ma...@gmail.com>> wrote:
> Hi everyone,
> 
> I am trying to implement a functionality in Zeppelin, where a notebook copy can be kept with each websocket associated with that notebook. This way the notebook would be opened in read-only mode and changes made by one connection would not be visible to the other connections over the same notebook. I would additionally disable the note.persist in this case.
> 
> I explored the code a little and found that NotebookServer is keeping a map of notebookIds to list of sockets. Further, it seems that any message to a specific notebook gets broadcasted to the complete list of sockets associated with that list.
> 
> My initial idea was to just maintain a notebook copy for each websocket, but now this is looking a little complex, since it seems that for every job, I would also need to maintain the websocket which triggered it, resulting in changes across the codebase.
> 
> Can someone help me out in how to approach this change in the cleanest and fastest way.
> 
> Regards,
> Ashish
> 
> PS: The motivation for making this change is mentioned in one of my earlier questions "Zeppelin multi-user dashboards" on the users list.
> 
>