This is the official issue for tracking support for AWS S3. Specifically, we want to enable Delta Lake to operate on AWS S3 with transactional guarantees when all writes go through a single Spark driver (that is, it must be a single SparkContext in a single Spark driver JVM process).
The major challenges for operating on S3 with transactional guarantees are as follows:
In this issue, we are going to solve the above problems for a single Spark cluster - if all the concurrent writes to a table go through a single cluster, then we can do the necessary locking and tracking latest version needed to avoid the above issues.
What about going through a locking interface which could be implemented within Spark or by a service, such as DynamoDB? Then future work could be merged to enable multi-cluster ACID.
Using something like DynamoDB as locking service is definitely one of ideas we will be playing with to implement the multi-cluster mode (tracked by #41 ). For this issue, we are focusing on releasing something quickly that enables the community to start using Delta Lake with S3.
with EMR 5.24.0 we can have multiple master nodes (obviously they are fail-safe ones, but will be interesting to test).
What should be the best way to start testing this in AWS S3? I can also start updating few documentation around it so that others can refer to it as well, please do let me know.
@gourav-sg We are working the document right now. Once we update it, I will ping you in this ticket. Thanks!
Most helpful comment
This is resolved by https://github.com/delta-io/delta/commit/c8169bd106e1a509d4138c5d1655457aa11179c5