Giter Site home page Giter Site logo

wix-incubator / quix Goto Github PK

View Code? Open in Web Editor NEW
267.0 54.0 38.0 12.86 MB

Quix Notebook Manager

Home Page: https://wix-incubator.github.io/quix/

License: MIT License

Dockerfile 0.12% Scala 9.05% JavaScript 13.89% TypeScript 70.51% HTML 2.45% Shell 0.07% Python 0.21% SCSS 2.50% HCL 1.19%
notebook-manager presto athena bigquery trino

quix's People

Contributors

alonniwix avatar amitayh avatar amitmarx avatar antonpodolsky avatar aweisberg avatar barakplasma avatar dependabot[bot] avatar dinportnoy avatar dmytrokyr avatar evgenyalterman avatar frolovv avatar ittaym avatar kgeis avatar kgshv avatar martint avatar odedkwix avatar omrigilad avatar s-pace avatar stas-slu avatar sthuck avatar tamirhr avatar weldpua2008 avatar yaarams avatar yonifra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quix's Issues

backend : remove mvn test phase as mvn install includes it

travis.yml includes both mvn install and mvn test commands.

but according to http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html install already includes test

also raw travis logs show that same tests are executed twice :
https://api.travis-ci.com/v3/job/194732404/log.txt

first execution of RefreshableDbTest at 20:57:08

Running quix.presto.db.RefreshableDbTest
20:57:08.473 [specs2-2] WARN quix.presto.db.RefreshableDb$ - Catalog Catalog(bi,List(),catalog)is empty
20:57:08.589 [specs2-1] INFO quix.presto.QueryExecutor - method=initClient event=start query-id=7b5735fa-3e1e-4d3b-a7c2-188886aebd00 user=quix-db-tree
20:57:08.588 [specs2-2] INFO quix.presto.QueryExecutor - method=initClient event=start query-id=3dff2531-4115-440d-b34c-12435959dcca user=quix-db-tree
20:57:08.603 [specs2-1] INFO quix.presto.QueryExecutor - method=runAsync event=start query-id=7b5735fa-3e1e-4d3b-a7c2-188886aebd00 user=quix-db-tree sql=select distinct table_cat, table_schem, table_name from system.jdbc.tables

second execution of RefreshableDbTest at 20:58:51

Running quix.presto.db.RefreshableDbTest
20:58:51.980 [specs2-2] WARN quix.presto.db.RefreshableDb$ - Catalog Catalog(bi,List(),catalog)is empty
20:58:52.137 [specs2-3] INFO quix.presto.QueryExecutor - method=initClient event=start query-id=82f26a45-46cb-47aa-b16c-2c0a9836ec67 user=quix-db-tree
20:58:52.152 [specs2-2] INFO quix.presto.QueryExecutor - method=initClient event=start query-id=8f2c27f7-f576-49fd-b873-5de3e0901242 user=quix-db-tree
20:58:52.165 [specs2-2] INFO quix.presto.QueryExecutor - method=runAsync event=start query-id=8f2c27f7-f576-49fd-b873-5de3e0901242 user=quix-db-tree sql=select distinct table_cat, table_schem, table_name from system.jdbc.tables

After some time I get a message "Connection Lost"

Hi
After a night the process up and running when I try to make a query I get a message "connection lost"
Seems to be a problem with timeout of connections or something like that
I've tried to see for exception in the log container but nothing there
Tried to restart the container do not work either !?!
I join a screenshot

Screenshot from 2019-04-24 13-50-52

featuring Quix in Docusaurus

Hello, we would like to feature your project to the Docusaurus users

If you are okay with it, are you able to provide a logo we can use? Additional information can be found here

improve timeseries graph visualisation

SELECT date_trunc('minute', created) as date_created, count(1) as count
FROM system.runtime.queries
group by 1

will result in following visualisation :

image

  • the dates on X axis are overlapping one another
  • the format of tooltip doesn't match the values (it shows hour first and then date)
  • two adjacent points can't be distinguished one from another (the cursor points to two different points in time)

How to use my presto cluster ?

I've succeed to access my presto cluster
I see quix making queries to this cluster now
but nothing ! the loading db keep busy and no schema is retrieved from the server
The only request made repeatedly is

select 1 from raptor.audience.monthly_users limit 1

The table name is monthly_users
Is there something that must be configured ?
Thanks

Aws Athena support

Question: can this product works on top of Athena instead of Presto directly?

add history of query executions

we want the ability to see in quix the history of all past executions.

users should be able to see their queries, queries of other users, all queries that were executed in some timerange.

let's try adding to quix-core module of quix-backend the trait that should handle management of such data.

UnknownHostException: presto

Hi,
I've tried installing quix on my server.. However, When I try to run a query, the backend throws the following exception:

[quix-db-tree-32] quix.presto.SingleResultBuilder : Got exception
backend_1 |
backend_1 | java.net.UnknownHostException: presto
backend_1 | at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220) ~[na:na]
backend_1 | at java.base/java.net.Socket.connect(Socket.java:591) ~[na:na]
backend_1 | at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:177) ~[na:na]
backend_1 | at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474) ~[na:na]
backend_1 | at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569) ~[na:na]
backend_1 | at java.base/sun.net.www.http.HttpClient.(HttpClient.java:242) ~[na:na]
backend_1 | at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341) ~[na:na]
backend_1 | at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362) ~[na:na]
backend_1 | at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1242) ~[na:na]
backend_1 | at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181) ~[na:na]
backend_1 | at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1075) ~[na:na]
backend_1 | at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1009) ~[na:na]
backend_1 | at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1581) ~[na:na]
backend_1 | at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509) ~[na:na]
backend_1 | at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527) ~[na:na]
backend_1 | at scalaj.http.HttpRequest.doConnection(Http.scala:367) ~[scalaj-http_2.12-2.4.1.jar:2.4.1]
backend_1 | at scalaj.http.HttpRequest.exec(Http.scala:343) ~[scalaj-http_2.12-2.4.1.jar:2.4.1]
backend_1 | at scalaj.http.HttpRequest.asString(Http.scala:491) ~[scalaj-http_2.12-2.4.1.jar:2.4.1]
backend_1 | at quix.presto.rest.ScalaJPrestoStateClient.$anonfun$init$3(ScalaJPrestoStateClient.scala:22) ~[quix-presto-module-1.0.0-SNAPSHOT.jar:na]
backend_1 | at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:81) ~[monix-eval_2.12-3.0.0-RC2.jar:3.0.0-RC2]
backend_1 | at monix.eval.internal.TaskRestartCallback.syncOnSuccess(TaskRestartCallback.scala:108) ~[monix-eval_2.12-3.0.0-RC2.jar:3.0.0-RC2]
backend_1 | at monix.eval.internal.TaskRestartCallback.onSuccess(TaskRestartCallback.scala:74) ~[monix-eval_2.12-3.0.0-RC2.jar:3.0.0-RC2]
backend_1 | at monix.eval.internal.TaskSleep$SleepRunnable.run(TaskSleep.scala:62) ~[monix-eval_2.12-3.0.0-RC2.jar:3.0.0-RC2]
backend_1 | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
backend_1 | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
backend_1 | at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

This is my backend application.properties file:

server.port=8080
presto.api=test-server01:8090
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

Am I missing something?

frontend : progress UI doesn't match the execute socket progression

example :

socket says 30%, UI says 0%

image

use this query to reproduce :

WITH customer_total_return 
     AS (SELECT sr_customer_sk     AS ctr_customer_sk, 
                sr_store_sk        AS ctr_store_sk, 
                Sum(sr_return_amt) AS ctr_total_return 
         FROM   tpcds.sf1.store_returns, 
                tpcds.sf1.date_dim 
         WHERE  sr_returned_date_sk = d_date_sk 
                AND d_year = 2001 
         GROUP  BY sr_customer_sk, 
                   sr_store_sk) 
SELECT c_customer_id 
FROM   customer_total_return ctr1, 
       tpcds.sf1.store, 
       tpcds.sf1.customer 
WHERE  ctr1.ctr_total_return > (SELECT Avg(ctr_total_return) * 1.2 
                                FROM   customer_total_return ctr2 
                                WHERE  ctr1.ctr_store_sk = ctr2.ctr_store_sk) 
       AND s_store_sk = ctr1.ctr_store_sk 
       AND s_state = 'TN' 
       AND ctr1.ctr_customer_sk = c_customer_sk 
ORDER  BY c_customer_id
LIMIT 100;

Mandatory authentication?

Hi,
Could authentication method be required?
I've tried to run quix with basic configuration and got the following exception in backend when trying to run a query:

backend_1 | quix.api.users.RequestNotAuthenticated: Request not authenticated
backend_1 | at quix.web.auth.JwtUsers.$anonfun$auth$5(JwtUsers.scala:20) ~[classes/:na]
backend_1 | at scala.Option.getOrElse(Option.scala:121) ~[scala-library-2.12.7.jar:na]
backend_1 | at quix.web.auth.JwtUsers.auth(JwtUsers.scala:20) ~[classes/:na]
backend_1 | at quix.web.controllers.PrestoController.handleTextMessage(PrestoController.scala:23) ~[classes/:na]
backend_1 | at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) ~[spring-websocket-5.1.2.RELEASE.jar:5.1.2.RELEASE]
backend_1 | at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) ~[spring-websocket-5.1.2.RELEASE.jar:5.1.2.RELEASE]
backend_1 | at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) ~[spring-websocket-5.1.2.RELEASE.jar:5.1.2.RELEASE]
backend_1 | at org.springframework.web.socket.handler.ExceptionWebSocketHandlerDecorator.handleMessage(ExceptionWebSocketHandlerDecorator.java:58) ~[spring-websocket-5.1.2.RELEASE.jar:5.1.2.RELEASE]
backend_1 | at org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter.onWebSocketText(JettyWebSocketHandlerAdapter.java:83) ~[spring-websocket-5.1.2.RELEASE.jar:5.1.2.RELEASE]
backend_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
backend_1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
backend_1 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
backend_1 | at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
backend_1 | at org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(CallableMethod.java:71) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(OptionalSessionCallableMethod.java:72) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onTextMessage(JettyAnnotatedEventDriver.java:234) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:66) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onTextFrame(JettyAnnotatedEventDriver.java:226) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:162) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:476) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.extensions.AbstractExtension.nextIncomingFrame(AbstractExtension.java:183) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:105) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.forwardIncoming(CompressExtension.java:142) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.incomingFrame(PerMessageDeflateExtension.java:85) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:220) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:219) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:244) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:560) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:391) ~[websocket-common-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) ~[jetty-util-9.4.12.v20180830.jar:9.4.12.v20180830]
backend_1 | at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
backend_1 |

Also, When I try to view a table's details in the DB explorer, I get the following error in console:

Error: "[$resource:badcfg] Error in resource configuration for action query. Expected response to contain an array but got an object (Request: GET /api/db/explore/cassandra/keyspace1/table_test1)
https://errors.angularjs.org/1.7.8/$resource/badcfg?p0=query&p1=array&p2=object&p3=GET&p4=%2Fapi%2Fdb%2Fexplore%2Fcassandra%2Fkeyspace1%2Ftable_test1"
i http://test-server01:3000/app.bundle.min.js:1
G http://test-server01:3000/app.bundle.min.js:1
u http://test-server01:3000/app.bundle.min.js:1
u http://test-server01:3000/app.bundle.min.js:1
$digest http://test-server01:3000/app.bundle.min.js:1
$apply http://test-server01:3000/app.bundle.min.js:1
b http://test-server01:3000/app.bundle.min.js:1
y http://test-server01:3000/app.bundle.min.js:1
onload http://test-server01:3000/app.bundle.min.js:1
Possibly unhandled rejection: {}

It seems that the response is okay(and yes, an object), but not an array.

docker-compose not working

Hi
I try to start the server as described I get
Starting quix_presto_1 ...
Starting quix_presto_1 ... done
Starting quix_backend_1 ... error

ERROR: for quix_backend_1 Cannot start service backend: driver failed programming external connectivity on endpoint quix_backend_1 (279f5f64a60ebb43a0e883a02844357c2adc322412678e3af1aa1d5a68e9e72a): Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use

ERROR: for backend Cannot start service backend: driver failed programming external connectivity on endpoint quix_backend_1 (279f5f64a60ebb43a0e883a02844357c2adc322412678e3af1aa1d5a68e9e72a): Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use
ERROR: Encountered errors while bringing up the project.

Checked on my machine no port 8080 used
Do you've any idea ?
Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.