### _Why are the changes needed?_ Apache Derby is no longer active. One major drawback of Derby is that it does not support multiple connections to single db files, making it hard to analyze the data on local development. SQLite may be the most popular embedded DBMS in the world. It lives almost in every smartphone (at least Android and iOS integrate SQLite), which means SQLite is quite stable and may be a good choice for standalone production deployment. SQLite provides a CLI command `sqlite3` which is easy to use to connect a data file and run queries. Multi connections to a single db file is allowed, which helps a lot to analyze the data when the Kyuubi server is running. ### _How was this patch tested?_ - [x] Add some test cases that check the changes thoroughly including negative and positive cases if possible - [ ] Add screenshots for manual tests if appropriate - [x] [Run test](https://kyuubi.readthedocs.io/en/master/develop_tools/testing.html#running-tests) locally before make a pull request Closes #4950 from pan3793/sqlite. Closes #4950 738c39e6a [Cheng Pan] Update docs/deployment/migration-guide.md 5facdad9c [Cheng Pan] Update docs/deployment/migration-guide.md b9883489c [Cheng Pan] migrate default metadata store to sqlite c785e1a77 [Cheng Pan] migrate jdbc auth test to sqlite 23f63b932 [Cheng Pan] introduce sqlite deps Authored-by: Cheng Pan <chengpan@apache.org> Signed-off-by: Cheng Pan <chengpan@apache.org>
3.4 KiB
3.4 KiB
Kyuubi Migration Guide
Upgrading from Kyuubi 1.7 to 1.8
- Since Kyuubi 1.8, SQLite is added and becomes the default database type of Kyuubi metastore, as Derby has been deprecated.
Both Derby and SQLite are mainly for testing purposes, and they're not supposed to be used in production.
To restore previous behavior, set
kyuubi.metadata.store.jdbc.database.type=DERBYandkyuubi.metadata.store.jdbc.url=jdbc:derby:memory:kyuubi_state_store_db;create=true.
Upgrading from Kyuubi 1.7.0 to 1.7.1
- Since Kyuubi 1.7.1,
protocolVersionis removed from the request parameters of the REST APIOpen(create) a session. All removed or unknown parameters will be silently ignored and affects nothing. - Since Kyuubi 1.7.1,
confOverlayis supported in the request parameters of the REST APICreate an operation with EXECUTE_STATEMENT type.
Upgrading from Kyuubi 1.6 to 1.7
- In Kyuubi 1.7,
kyuubi.ha.zookeeper.engine.auth.typedoes not fallback tokyuubi.ha.zookeeper.auth.type.
When Kyuubi engine does Kerberos authentication with Zookeeper, user needs to explicitly setkyuubi.ha.zookeeper.engine.auth.typetoKERBEROS. - Since Kyuubi 1.7, Kyuubi returns engine's information for
GetInforequest instead of server. To restore the previous behavior, setkyuubi.server.info.providertoSERVER. - Since Kyuubi 1.7, Kyuubi session type
SQLis refactored toINTERACTIVE, because Kyuubi supports not onlySQLsession, but alsoSCALAandPYTHONsessions. User need to useINTERACTIVEsessionType to look up the session event. - Since Kyuubi 1.7, the REST API of
Open(create) a sessionwill not contain parametersuserpasswordandIpAddr. User and password should be set inAuthorizationof http request if needed.
Upgrading from Kyuubi 1.6.0 to 1.6.1
- Since Kyuubi 1.6.1,
kyuubi.ha.zookeeper.engine.auth.typedoes not fallback tokyuubi.ha.zookeeper.auth.type.
When Kyuubi engine does Kerberos authentication with Zookeeper, user needs to explicitly setkyuubi.ha.zookeeper.engine.auth.typetoKERBEROS.
Upgrading from Kyuubi 1.5 to 1.6
- Kyuubi engine gets Zookeeper principal & keytab from
kyuubi.ha.zookeeper.auth.principal&kyuubi.ha.zookeeper.auth.keytab.
kyuubi.ha.zookeeper.auth.principal&kyuubi.ha.zookeeper.auth.keytabfallback tokyuubi.kinit.principal&kyuubi.kinit.keytabwhen not set.
Since Kyuubi 1.6,kyuubi.kinit.principal&kyuubi.kinit.keytabare filtered out from Kyuubi engine's conf for better security.
When Kyuubi engine does Kerberos authentication with Zookeeper, user needs to explicitly setkyuubi.ha.zookeeper.auth.principal&kyuubi.ha.zookeeper.auth.keytab.