Returns a new base relation with the given parameters and user defined schema (and possibly other backend-specific clauses).
Returns a new base relation with the given parameters and user defined schema (and possibly other backend-specific clauses). Note: the parameters' keywords are case insensitive and this insensitivity is enforced by the Map that is passed to the function.
::DeveloperApi:: Implemented by objects that produce relations for a specific kind of data source with a given schema. When Spark SQL is given a DDL operation with a USING clause specified (to specify the implemented SchemaRelationProvider) and a user defined schema, this interface is used to pass in the parameters specified by a user.
Users may specify the fully qualified class name of a given data source. When that class is not found Spark SQL will append the class name
DefaultSource
to the path, allowing for less verbose invocation. For example, 'org.apache.spark.sql.json' would resolve to the data source 'org.apache.spark.sql.json.DefaultSource'.A new instance of this class with be instantiated each time a DDL call is made.
The difference between a SchemaRelationProvider and an ExternalSchemaRelationProvider is that latter accepts schema and other clauses in DDL string and passes over to the backend as is, while the schema specified for former is parsed by Spark SQL. A relation provider can inherit both SchemaRelationProvider and ExternalSchemaRelationProvider if it can support both Spark SQL schema and backend-specific schema.