[CARBONDATA-3503] Optimize Carbon SparkExtensions

Why is this PR needed?

Current Carbon Spark extension does not support following features:
1. not support mv
2. Parser still use CarbonSqlAstBuilder
3. still use CarbonSession to run some test cases

What changes were proposed in this PR?

Enhance Carbon Spark Extension as following:
1. new order of parsers (CarbonParser->SparkParser)
it means CarbonParser will parser SQL firstly, which will match only carbon's particular SQL.

CreateTable:
1. CarbonExtnesion only support "stored as carbondata" and "using carbondata"
2. use CarbonCreateDataSourceTableCommand instead of CarbonCreateTableCommand
so there is no hard coded SQL to create a data source table

DataMap:
1. support MV

TestCases:
1. remove spark-carbon-common-test module, move test back to spark-common-test module
2. all test cases will be run using SparkSession with Carbon Extension

Example:
1. only CarbonSessionExample use CarbonSession, others will use SparkSession with Carbon Extension

Others:
1. support custom lock interface
2. support database location provider interface

Does this PR introduce any user interface change?
Yes. (please explain the change and update document)

Is any new testcase added?
Yes

This closes #3574
451 files changed
tree: cd11e7f6df463594c30ad1c287aa71678d3b5b43
  1. .github/
  2. assembly/
  3. bin/
  4. build/
  5. common/
  6. conf/
  7. core/
  8. datamap/
  9. dev/
  10. docs/
  11. examples/
  12. format/
  13. hadoop/
  14. integration/
  15. licenses-binary/
  16. processing/
  17. python/
  18. store/
  19. streaming/
  20. tools/
  21. .gitignore
  22. LICENSE
  23. NOTICE
  24. pom.xml
  25. README.md
README.md

Apache CarbonData is an indexed columnar data store solution for fast analytics on big data platform, e.g.Apache Hadoop, Apache Spark, etc.

You can find the latest CarbonData document and learn more at: http://carbondata.apache.org

CarbonData cwiki

Visit count: HitCount

Status

Spark2.2: Build Status Coverage Status

Features

CarbonData file format is a columnar store in HDFS, it has many features that a modern columnar format has, such as splittable, compression schema ,complex data type etc, and CarbonData has following unique features:

  • Stores data along with index: it can significantly accelerate query performance and reduces the I/O scans and CPU resources, where there are filters in the query. CarbonData index consists of multiple level of indices, a processing framework can leverage this index to reduce the task it needs to schedule and process, and it can also do skip scan in more finer grain unit (called blocklet) in task side scanning instead of scanning the whole file.
  • Operable encoded data :Through supporting efficient compression and global encoding schemes, can query on compressed/encoded data, the data can be converted just before returning the results to the users, which is “late materialized”.
  • Supports for various use cases with one single Data format : like interactive OLAP-style query, Sequential Access (big scan), Random Access (narrow scan).

Building CarbonData

CarbonData is built using Apache Maven, to build CarbonData

Online Documentation

Integration

Other Technical Material

Fork and Contribute

This is an active open source project for everyone, and we are always open to people who want to use this system or contribute to it. This guide document introduce how to contribute to CarbonData.

Contact us

To get involved in CarbonData:

About

Apache CarbonData is an open source project of The Apache Software Foundation (ASF).