{"id":13488776,"url":"https://github.com/mc2-project/opaque-sql","last_synced_at":"2026-01-17T14:37:49.753Z","repository":{"id":43808415,"uuid":"72469352","full_name":"mc2-project/opaque-sql","owner":"mc2-project","description":"An encrypted data analytics platform","archived":false,"fork":false,"pushed_at":"2023-03-29T16:04:05.000Z","size":18925,"stargazers_count":178,"open_issues_count":22,"forks_count":73,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-08-01T18:40:10.240Z","etag":null,"topics":["analytics","enclave","machine-learning","privacy","security","spark","spark-sql"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mc2-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-10-31T19:09:35.000Z","updated_at":"2024-07-14T01:00:12.000Z","dependencies_parsed_at":"2024-01-14T11:16:18.490Z","dependency_job_id":"e70f3483-7170-4f8e-a8f1-4491bdd3d182","html_url":"https://github.com/mc2-project/opaque-sql","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mc2-project%2Fopaque-sql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mc2-project%2Fopaque-sql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mc2-project%2Fopaque-sql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mc2-project%2Fopaque-sql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mc2-project","download_url":"https://codeload.github.com/mc2-project/opaque-sql/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222333976,"owners_count":16968058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","enclave","machine-learning","privacy","security","spark","spark-sql"],"created_at":"2024-07-31T18:01:21.603Z","updated_at":"2026-01-17T14:37:49.723Z","avatar_url":"https://github.com/mc2-project.png","language":"Scala","funding_links":[],"categories":["Scala","Data Analytics","数据科学"],"sub_categories":["Library OSes and SDKs"],"readme":"\u003cimg src=\"https://mc2-project.github.io/opaque-sql/opaque.svg\" width=\"315\" alt=\"Opaque\"\u003e\n\n## Secure Apache Spark SQL\n\n![Tests Status](https://github.com/mc2-project/opaque/actions/workflows/main.yml/badge.svg) \n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) \n[\u003cimg src=\"https://img.shields.io/badge/slack-contact%20us-blueviolet?logo=slack\"\u003e](https://join.slack.com/t/mc2-project/shared_invite/zt-rt3kxyy8-GS4KA0A351Ysv~GKwy8NEQ)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](CODE_OF_CONDUCT.md)\n\nWelcome to the landing page of Opaque SQL! Opaque SQL is a package for Apache Spark SQL that enables processing over encrypted DataFrames using the OpenEnclave framework. \n\n### Quick start\nNote that Opaque SQL requires the [MC\u003csup\u003e2\u003c/sup\u003e Client](https://github.com/mc2-project/mc2) in order to securely run an encrypted query. For a quickstart on that end-to-end workflow, please see [the README](https://github.com/mc2-project/mc2#quickstart) in the MC\u003csup\u003e2\u003c/sup\u003e Client repo.\n\n### Usage\nSimilar to Apache Spark SQL, Opaque SQL offer an *encrypted DataFrame abstraction*. Users familiar with the Spark API can easily run queries on encrypted DataFrames using the same API. The main difference is that we support saving and loading of DataFrames, but not actions like `.collect` or `.show`. An example script is the following:\n\n```scala\n// Import hooks to Opaque SQL\nimport edu.berkeley.cs.rise.opaque.implicits._\nimport org.apache.spark.sql.types._\n\n// Load an encrypted DataFrame (saved using the MC2 client)\nval df_enc = spark.read.format(\"edu.berkeley.cs.rise.opaque.EncryptedSource\").load(\"/tmp/opaquesql.csv.enc\")\n// Run a filter query on the encrypted DataFrame\nval result = df_enc.filter($\"Age\" \u003c lit(30))\n// This will save the encrypted result to the result directory on the cloud\nresult.write.format(\"edu.berkeley.cs.rise.opaque.EncryptedSource\").save(\"/tmp/opaque_sql_result\")\n```\n\nFor more details on how to use Opaque SQL, please refer to [this section](https://mc2-project.github.io/opaque-sql-docs/src/usage/usage.html).\n\n### Documentation\nFor more details on building, using, and contributing, please see our [documentation](https://mc2-project.github.io/opaque-sql-docs/src/index.html).\n\n### Paper\nThe open source is based on our NSDI 2017 [paper](https://www.usenix.org/system/files/conference/nsdi17/nsdi17-zheng.pdf).\n\n### Contact\nJoin the discussion on [Slack](https://join.slack.com/t/mc2-project/shared_invite/zt-rt3kxyy8-GS4KA0A351Ysv~GKwy8NEQ) or email us at mc2-dev@googlegroups.com.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmc2-project%2Fopaque-sql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmc2-project%2Fopaque-sql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmc2-project%2Fopaque-sql/lists"}