carbondata.git
2 years ago[maven-release-plugin] prepare release apache-carbondata-2.0.0-rc1 apache-carbondata-2.0.0-rc1
kunal642 [Wed, 1 Apr 2020 12:51:21 +0000 (18:21 +0530)] 
[maven-release-plugin] prepare release apache-carbondata-2.0.0-rc1

2 years ago[CARBONDATA-3740] Add line separator option to load command to configure the line...
jack86596 [Wed, 11 Mar 2020 07:36:45 +0000 (15:36 +0800)] 
[CARBONDATA-3740] Add line separator option to load command to configure the line separator during csv parsing.

Why is this PR needed?
Sometime univocity parser will detect the line separator incorrectly. In this case, user should be able to set line separator explicitly.
Issue: During loading, if in the first line, there is one field has a '\r' character and this '\r' appears before the first '\n',
line separator detection will treat '\r' as line separator. This is not the intention.
Example:
Data file has two lines, ^M is '\r':
1,2^M,3
4,5,6
After loading,
The records in table will be:
| 1 | 2 | null |
| null | 3
4 | 5 |
Correct should be:
| 1 | 2^M | 3 |
| 4 | 5 | 6 |

What changes were proposed in this PR?
Allow user to specify line separator explicitly in load command, add one new option to load command named "line_separator".

Does this PR introduce any user interface change?
Yes. New load option "line_separator" is added.

Is any new testcase added?
Yes.

This closes #3664

2 years ago[CARBONDATA-3548] Add spatial-index user guid to doc
litao [Thu, 19 Dec 2019 13:12:21 +0000 (21:12 +0800)] 
[CARBONDATA-3548] Add spatial-index user guid to doc

Why is this PR needed?
Spatial index feature document is not updated yet.

What changes were proposed in this PR?
updated the document for spatial index feature

Does this PR introduce any user interface change?
updated the document for psatial index feature.

Is any new testcase added?
No

This closes #3520

Co-authored-by: VenuReddy2103 <venugopalreddyk@huawei.com>
2 years ago[CARBONDATA-3756] Fix stage query bug it only read the first blocklet of each carbond...
QiangCai [Fri, 27 Mar 2020 08:35:38 +0000 (16:35 +0800)] 
[CARBONDATA-3756] Fix stage query bug it only read the first blocklet of each carbondata file

Why is this PR needed?
The query of stage files only read the first blocklet of each carbondata file.
So when the file contains multiple blocklets, the query result will be wrong.

What changes were proposed in this PR?
The query of stage files should read the all blocklets of all carbondata files.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3684

2 years ago[HOTFIX] Fix all flink test case failure and enable UT in CI
ajantha-bhat [Fri, 27 Mar 2020 12:11:18 +0000 (17:41 +0530)] 
[HOTFIX] Fix all flink test case failure and enable UT in CI

Why is this PR needed?
After #3628, default BATCH_FILE_ORDER is wrong [it is not ASC or DSC].
so, all the test case in flink module failed due as no order is set in stage command.
Also flink UT is not running in CI, hence it is not caught

What changes were proposed in this PR?
Fix the default value to Ascending order.
Enable UT running for flink module.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3685

2 years ago[CARBONDATA-3752] Reuse Exchange to fix performance issue
QiangCai [Thu, 26 Mar 2020 09:18:36 +0000 (17:18 +0800)] 
[CARBONDATA-3752] Reuse Exchange to fix performance issue

Why is this PR needed?
Spark ReusedExchange rule can't recognition the same Exchange plan on carbon table.
So the query on the carbon table doesn't reuse Exchange, it leads to bad performance.

For Example:

create table t1(c1 int, c2 string) using carbondata

explain
select c2, sum(c1) from t1 group by c2
union all
select c2, sum(c1) from t1 group by c2
physical plan as following:

Union
:- *(2) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))])
: +- Exchange hashpartitioning(c2#37, 200)
: +- *(1) HashAggregate(keys=[c2#37], functions=[partial_sum(cast(c1#36 as bigint))])
: +- *(1) FileScan carbondata default.t1[c1#36,c2#37] ReadSchema: struct<c1:int,c2:string>
+- *(4) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))])
 +- Exchange hashpartitioning(c2#37, 200)
 +- *(3) HashAggregate(keys=[c2#37], functions=[partial_sum(cast(c1#36 as bigint))])
 +- *(3) FileScan carbondata default.t1[c1#36,c2#37] ReadSchema: struct<c1:int,c2:string>
after change, physical plan as following:

Union
:- *(2) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))])
:  +- Exchange hashpartitioning(c2#37, 200)
:     +- *(1) HashAggregate(keys=[c2#37], functions=[partial_sum(cast(c1#36 as bigint))])
:        +- *(1) FileScan carbondata default.t1[c1#36,c2#37] ReadSchema: struct<c1:int,c2:string>
+- *(4) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))])
   +- ReusedExchange [c2#37, sum#54L], Exchange hashpartitioning(c2#37, 200)
What changes were proposed in this PR?
change CarbonFileIndex class to case class.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3681

2 years ago[CARBONDATA-3718] Support SegmentLevel MinMax for better Pruning and less driver...
Indhumathi27 [Thu, 9 Jan 2020 10:11:44 +0000 (15:41 +0530)] 
[CARBONDATA-3718] Support SegmentLevel MinMax for better Pruning and less driver memory usage for cache

Why is this PR needed?
In Cloud scenarios, index is too big to store in SparkDriver, since VM may not have
so much memory. Currently in Carbon, we will load all indexes to cache for first time query.
Since Carbon LRU Cache does not support time-based expiration, indexes will be removed from
cache based on LeastRecentlyUsed mechanism, when the carbon lru cache is full.

In some scenarios, where user's table has more segments and if user queries only very
few segments often, we no need to load all indexes to cache. For filter queries,
if we prune and load only matched segments to cache,
then driver's memory will be saved.

What changes were proposed in this PR?
Added all block minmax with column-id and sort_column info to segment metadata file
and prune segment based on segment files and load index only for matched segment. Added a configurable carbon property 'carbon.load.all.index.to.cache'
to allow user to load all indexes to cache if needed. BY default, value will
be true, which loads all indexes to cache.

Does this PR introduce any user interface change?
Yes.

Is any new testcase added?
Yes

This closes #3584

2 years ago[CARBONDATA-3742] Support spark 2.4.5 integration
Jacky Li [Tue, 17 Mar 2020 08:37:58 +0000 (16:37 +0800)] 
[CARBONDATA-3742] Support spark 2.4.5 integration

Why is this PR needed?
Currently CarbonData does not support integration with spark 2.4.5

What changes were proposed in this PR?
Support integration with spark 2.4.5

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3671

2 years ago[HOTFIX] Fix ClassName for load datamaps parallel job
Indhumathi27 [Wed, 18 Mar 2020 10:22:18 +0000 (15:52 +0530)] 
[HOTFIX] Fix ClassName for load datamaps parallel job

Why is this PR needed?
Load Datamap parallel was not launching job, because the class name was not correct

What changes were proposed in this PR?
Change className for load datamaps parallel job

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3674

2 years ago[CARBONDATA-3733] Fix Incorrect query results on mv with limit
Indhumathi27 [Mon, 2 Mar 2020 15:58:40 +0000 (21:28 +0530)] 
[CARBONDATA-3733] Fix Incorrect query results on mv with limit

Why is this PR needed?
Issue 1:
After creating an materilaised view, queries with simple projection and limit gives incorrect results.
Issue 2:
Compact IUD_DELTA on materilaised view throws NullPointerException, because SegmentUpdateStatusManager is not set
Issue 3:
Queries with order by columns not in projection for create mv's, gives incorrect results.

What changes were proposed in this PR?
Issue 1:
Copy subsume Flag and FlagSpec to subsumerPlan while rewriting with summarydatasets.
Update the flagSpec as per the mv attributes and copy to relation.
Issue 2:
Set SegmentUpdateStatusManager to CarbonLoadModel using carbonTable in case of IUD_DELTA compaction
Issue 3:
Order by columns has to be present in projection list during create mv.

This closes #3651

2 years agoWhy is this PR needed?
akashrn5 [Wed, 4 Mar 2020 09:47:02 +0000 (15:17 +0530)] 
Why is this PR needed?
When add segment is done on main table which has SI also on it. Then filter query is fired on SI column,
only segments which are loaded can be considered for SI pruning and external segment should be queried from main table.

What changes were proposed in this PR?
Handle while pruning for external segment. if external segment, get the filter from extersegment filter tree.

This closes #3656

2 years ago[CARBONDATA-3741] Fix ParseException from hive during ALTER SET TBLPROERTIES if datab...
Indhumathi27 [Fri, 13 Mar 2020 09:47:59 +0000 (15:17 +0530)] 
[CARBONDATA-3741] Fix ParseException from hive during ALTER SET TBLPROERTIES if database name starts with Underscore

Why is this PR needed?
After creating table, on next query, we will fire alter query to alter schema if table has index table or not. If database name contains underscore as first letter, hive alter query fails with parsing exception.

What changes were proposed in this PR?
Format Database name with `` , before firing the query to avoid parsing exception

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3668

2 years ago[CARBONDATA-3665] Support TimeBased Cache expiration using ExpiringMap
Indhumathi27 [Tue, 11 Feb 2020 12:50:38 +0000 (18:20 +0530)] 
[CARBONDATA-3665] Support TimeBased Cache expiration using ExpiringMap

Why is this PR needed?

Currently, in Carbon, we follow LRU cache based mechanism. An least-recently used entry will be removed from the cache when it is full. There is no time-based cache expiration supported in carbon. In cloud, all vm's may not have enough memory to cache everything we could cache.
In that case, we can clear cache after a specified duration. This can be achieved by using cache libraries available.

One of the caching library is ExpringMap, which provides flexible and powerful caching features. Please refer ExpiringMap for more info.

What changes were proposed in this PR?

1. Replaced LinkedHashMap with ExpringMap
2. Added a table property to allow user to specify cache expiration duration in minutes, to clear cache entries for that table.
Newly added carbon table property:
index_cache_expiration_seconds which takes long value.
For example:
index_cache_expiration_seconds="300" -> After 5 minutes, cache will be cleared.

Does this PR introduce any user interface change?
Yes. (table property is added)

Is any new testcase added?
Yes

This closes #3653

2 years ago[CARBONDATA-3737] support prestodb and prestosql
ajantha-bhat [Thu, 27 Feb 2020 05:28:11 +0000 (10:58 +0530)] 
[CARBONDATA-3737] support prestodb and prestosql

Why is this PR needed?

Currently, carbondata supports only prestodb. As presto is divided into two communities prestodb and prestosql. It is necessary for carbondata to support the users from both the community.
Hence support prestodb-0.217 and prestosql-316 integration in carbon

What changes were proposed in this PR?

Keep a single presto module and have subfolders of common, prestodb, prestosql code (similar to latest spark integration structure)
support two profiles, prestodb and prestosql
Make prestoql as the default profile along with spark-2.3 default profile

Does this PR introduce any user interface change?
Yes. (updated the documents)

Is any new testcase added?
No (current testcases are enough for prestodb and prestosql) integration.
Manually run UT for both prestodb and prestosql.

This closes #3641

2 years ago[HOTFIX] Fix CarbonHive CI Failures
haomarch [Wed, 11 Mar 2020 09:34:02 +0000 (17:34 +0800)] 
[HOTFIX] Fix CarbonHive CI Failures

Why is this PR needed?
1. In some cases, the carbonhive ci failes because of the permission issue.
2. The csv filepath in the TestCase is wrong.
3. The complex type parsing has bugs.
4. When rowcount of resultset is zero, no error is throwed.

What changes were proposed in this PR?
1. Give 777 permission to carbonhive warehouse dirs.
2. Repair the csv filepath and complex typeparsing.
3. Verify the rowcount of resultset

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3665

2 years ago[HOTFIX] Exclude netty-all in lower version which could conflict with higher version
Zhangshunyu [Thu, 12 Mar 2020 03:37:55 +0000 (11:37 +0800)] 
[HOTFIX] Exclude netty-all in lower version which could conflict with higher version

Why is this PR needed?
exclude netty-all in lower version which could conflict with higher version

What changes were proposed in this PR?
pom is modified

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3666

2 years ago[CARBONDATA-3734] Fix insert failure on partition table when parition column is in...
ajantha-bhat [Mon, 2 Mar 2020 14:14:45 +0000 (19:44 +0530)] 
[CARBONDATA-3734] Fix insert failure on partition table when parition column is in sort column

Why is this PR needed?

When partition column is a sort column.

a) currently sort columns won't be the head of attributes, so need to add logic as per that, as partition columns will be in the end for global sort.

b) While rearranging the data fields at executor, need to keep partition column in the end even though it is in sort column.

What changes were proposed in this PR?
prepare sort columns for global sort based on the table sort columns.
Keep partition in the end, even though it is in sort columns for data field attributes

Does this PR introduce any user interface change?
No

Is any new testcase added?
No (already this scenario present in mv test case)

This closes #3654

2 years ago[CARBONDATA-3726] Add CDC and Data Dedup example
Jacky Li [Fri, 28 Feb 2020 06:39:58 +0000 (14:39 +0800)] 
[CARBONDATA-3726] Add CDC and Data Dedup example

Why is this PR needed?
Change Data Capture and Data Duplication is common tasks for data management, we should add examples for user to reference
We can leverage CarbonData's Merge API to implement these use cases

What changes were proposed in this PR?
1.Two examples are added
2.A performance improvement: earlier carbon always use 'full_outer' join to do Merge, in this PR we decide Join type based on match condition
3.Make auditor enable dynamically, user can disable it.

The output of CDCExample as following. By default in the example, target table has 200,000 rows and each change batch contains 9000 rows update, 1000 rows insert and 1000 rows delete

start CDC example using hive solution
generating target table...done! 10.43 s
applying change batch1...done! 5.94 s
applying change batch2...done! 3.99 s
applying change batch3...done! 3.58 s
applying change batch4...done! 3.31 s
applying change batch5...done! 3.22 s
applying change batch6...done! 4.31 s
applying change batch7...done! 5.00 s
applying change batch8...done! 4.02 s
applying change batch9...done! 5.88 s
applying change batch10...done! 5.33 s
total update takes 44.59 s
total query takes 1.33 s

start CDC example using carbon solution
generating target table...done! 10.03 s
applying change batch1...done! 4.48 s
applying change batch2...done! 2.35 s
applying change batch3...done! 2.00 s
applying change batch4...done! 1.99 s
applying change batch5...done! 1.80 s
applying change batch6...done! 1.81 s
applying change batch7...done! 1.59 s
applying change batch8...done! 1.70 s
applying change batch9...done! 1.74 s
applying change batch10...done! 1.70 s
total update takes 21.18 s
total query takes 0.81 s

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3643

2 years ago[CARBONDATA-3687] Support writing non-transactional carbondata files through hive
kunal642 [Sat, 11 Jan 2020 21:00:15 +0000 (02:30 +0530)] 
[CARBONDATA-3687] Support writing non-transactional carbondata files through hive

Why is this PR needed?
1. Support creating non-transactional carbon tables through hive.
2. Support writting data(insert into) in carbondata format through hive.

What changes were proposed in this PR?
1. Implemented MapredCarbonOutputFormat for data writing
2, Supported Map data type.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3583

2 years ago[CARBONDATA-3730] Avoid data conversion and remove duplicate codes in BlockIndexerStorage
Manhua [Fri, 6 Mar 2020 02:39:05 +0000 (10:39 +0800)] 
[CARBONDATA-3730] Avoid data conversion and remove duplicate codes in BlockIndexerStorage

Why is this PR needed?

The initial purpose of this PR was to remove the conversion between byte[][] and List when applying RLE on datapage in BlockIndexerStorageForNoInvertedIndexForShort, especially case when rle won't give any benefit. After checking other subclass of BlockIndexerStorage whether has similar problem, we found many duplicate codes and clean them up also.

What changes were proposed in this PR?

avoid some conversion between byte[][] and List
refactor classes of BlockIndexerStorage to remove duplicate codes

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3649

2 years ago[HOTFIX] Remove Useless filepath truncation During prunning
haomarch [Fri, 6 Mar 2020 13:08:42 +0000 (21:08 +0800)] 
[HOTFIX] Remove Useless filepath truncation During prunning

Why is this PR needed?
During prunning, it will truncate the filepath with the keyword "/Part0". But it is useless.
Specially, for partition table, the filepath is like '/tablename/partitionkey=value/segment0/.carbondata', it even have no keywork '/Part0'.
Then for non-partition table, it is also meaningless to do this work.
If there are a huge amount of blocklets, such as 400 million blocklets are going to do prunned, the truncation hampers the query performance heavily.

What changes were proposed in this PR?
Remove the filepath truncation.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3660

2 years ago[CARBONDATA-3728] Fix insert failure on partition table with local sort
ajantha-bhat [Sat, 29 Feb 2020 14:15:22 +0000 (19:45 +0530)] 
[CARBONDATA-3728] Fix insert failure on partition table with local sort

Why is this PR needed?

In the new Insert flow, partition column data is maintained at the end till convert to 3 steps of the write step.

But when local sort happens before the write step, The mapping is derived based on original internal order instead of partition internal order. Hence insert fails during sorting.

What changes were proposed in this PR?

Use internal partition order instead of internal order.

Support 1.1 compatibility

avoid impact for sort step of load flow partition.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3645

2 years ago[CARBONDATA-3714] Support specify order type when list stage files
liuzhi [Tue, 18 Feb 2020 08:46:35 +0000 (16:46 +0800)] 
[CARBONDATA-3714] Support specify order type when list stage files

Why is this PR needed?
Sometimes, user want load the lastest data to table first.

What changes were proposed in this PR?
Add "batch_file_order" option for CarbonInsertFromStagesCommand.

Does this PR introduce any user interface change?
Yes. (One option "batch_file_order" is added for CarbonInsertFromStageCommand, document added)

Is any new testcase added?
Yes

This closes #3628

2 years ago[CARBONDATA-3700] Optimize prune performance when prunning with multi-threads
h00424960 [Fri, 14 Feb 2020 15:25:59 +0000 (23:25 +0800)] 
[CARBONDATA-3700] Optimize prune performance when prunning with multi-threads

Why is this PR needed?
1. When pruning with multi-threads, there is a bug hambers the prunning performance heavily.
When the pruning results in no blocklets to map the query filter, The getExtendblocklet function will be triggered to get the extend blocklet metadata, when the Input of this function is an empty blocklet list, this function is expected to return an empty extendblocklet list directyly , but now there is a bug leading to "a hashset add operation" overhead which is meaningless.
Meanwhile, When pruning with multi-threads, the getExtendblocklet function will be triggerd for each blocklet, which should be avoided by triggerring this function for each segment.
2. When pruning, there is a bug hambers the prunning performance heavily.
ValidatePartitionInfo operation is executed by every blocklet, and it iterates all the partitions info for each blocklet. sIf there are millions blocklets, and hundreds partitions, the compatutaion complexity will be hundreds millions.
3. In the prunning, It will create filterexecuter pre blocklet, which involves a huge performance degrade when there are serveral millions blocklet.
Specically, The creating of filterexecuter is a heavy operation which involves a lot of time cost init works.

What changes were proposed in this PR?
1.1 if the input is an empty blocklet list in the getExtendblocklet function, we return an empty extendblocklet list directyly
1.2 We trigger the getExtendblocklet functon for each segment instead of each blocklet.
2.1 Remove validatePartitionInfo. Add the validatePartiionInfo in the getDataMap processing
3.1 We create filterexecuter per segment instead of that per blocklet, and share the filterexecuter between all blocklets.
In the case, add column or change sort column, then update the segment, there will be serveral different columnschemas of blocklets which exist in the segment, only if the columnshemas of all the blocklets are same, the filterexecuter can be shared. So we add a fingerprinter for each blocklet, to identify the columnschema. If the fingerprinters are same, which means that the columnschema are equal with each other, so the filterexecuter can be reused

Does this PR introduce any user interface change?
No.

Is any new testcase added?
Yes.

This closes #3620

2 years ago[CARBONDATA-3731] Avoid data copy in Writer
Jacky Li [Sat, 29 Feb 2020 06:38:38 +0000 (14:38 +0800)] 
[CARBONDATA-3731] Avoid data copy in Writer

Why is this PR needed?
For variable length column like String and Binary, currently there are 5 data copies during data write process, in CarbonFactDataHandlerColumnar.processDataRows

What changes were proposed in this PR?
This PR avoids unnecessary copies:

reduce from 5 copy to 1 copy by using DirectByteBuffer: copy data into column page backed by a ByteBuffer (DirectBuffer)
use Snappy to compress DirectBuffer directly and output compressed data in another ByteBuffer (DirectBuffer)

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3638

2 years ago[CARBONDATA-3735] Avoid listing all tables in metastore
Jacky Li [Wed, 4 Mar 2020 08:30:44 +0000 (16:30 +0800)] 
[CARBONDATA-3735] Avoid listing all tables in metastore

Why is this PR needed?
In CarbonCreateDataSourceTableCommand.scala, RegisterIndexTableCommand.scala, carbon is trying to list all tables in a database.
It will be slow if there are many tables in the db, thus should be avoided.

What changes were proposed in this PR?
This PR uses catalog tableExists API instead of listing all tables

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3655

2 years ago[CARBONDATA-3721] use centrol repo #3658
Zhangshunyu [Thu, 5 Mar 2020 07:14:58 +0000 (15:14 +0800)] 
[CARBONDATA-3721] use centrol repo #3658

use centrol repo

This closes #3658

2 years ago[CARBONDATA-3721][CARBONDATA-3590] Optimize Bucket Table
Zhangshunyu [Sun, 9 Feb 2020 14:04:48 +0000 (22:04 +0800)] 
[CARBONDATA-3721][CARBONDATA-3590] Optimize Bucket Table

Why is this PR needed?

Support Bucket Table consistent with spark to improve the join performance by avoid shuffle for bucket column. The same time, fix bugs about load/compact query of bucket.

What changes were proposed in this PR?

Support Bucket Table and consistent with spark to improve the join performance by avoid shuffle for bucket column. Fix bugs also.

1. For create table, ddl support both tblproperties and clustered by like hive.
2. For loading, fix some problems in loading when bucket column specified, make it clusterd into diff files based on bucket column.
3. For query, the hash impl should either keep the same for a given value or keep same with parquet table, so that the join result of diff bucket tables give correct result. By the way, the hash impl is configurable.
4. For compaction, group the block files based on bucket id, the data should hash into diff carbondata files also, otherwise the query flow will group the files based on bucket num, all data compacted will com into 1 partition and the join result will mismatch, the performace will very slow.
5. For tests, add 19 test cases in TableBucketingTestCase

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3637

2 years ago[CARBONDATA-3732] Fix ClassCastException with rand() udf function
Indhumathi27 [Mon, 2 Mar 2020 07:02:44 +0000 (12:32 +0530)] 
[CARBONDATA-3732] Fix ClassCastException with rand() udf function

Why is this PR needed?
ClassCastException is thrown, while running queries with cast of rand() function. This is because, while making a deterministic expression, we are converting an alias of CustomDeterministic expression to CustomDeterministic expression again, which is not needed.

What changes were proposed in this PR?
Do not convert an Alias of CustomDeterministic expression to CustomDeterministic expression again

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3648

2 years ago[CARBONDATA-3696] Avoid list db's all Tables to check table exists in the db
ShuMingLi [Thu, 13 Feb 2020 02:37:49 +0000 (10:37 +0800)] 
[CARBONDATA-3696] Avoid list db's all Tables to check table exists in the db

Why is this PR needed?

I found a lot of listTables of the db to check if table exists like this:

sparkSession.sessionState.catalog.listTables(databaseName)
  .exists(_.table.equalsIgnoreCase(tableName)
This may affect performances if there are lots of tables in one database. In spark, we can check this by tableExists function.

What changes were proposed in this PR?
use exits(db, table) to replace iterate tables in a db.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3631

2 years ago[CARBONDATA-3725]fix concurrent creation of Materialized Views issue
akashrn5 [Fri, 28 Feb 2020 07:00:39 +0000 (12:30 +0530)] 
[CARBONDATA-3725]fix concurrent creation of Materialized Views issue

Why is this PR needed?
When two create MVs are running concurrently in two different sessions with two different databases, then in any create fails in any session, other sessions's current database is changed and corresponding queries fails with table not found exception.

What changes were proposed in this PR?
When the session is changed we need to clear the datamap catalog map which may lead to this problem. Initially it was handled only for query and other flows, it wasnt handled in create MV flow. Handled same, make proper synchronisations to avoid these problems.

Does this PR introduce any user interface change?
Yes. (added a isSchemaRegistered in DatamapCatalog Interface, which is required to avoid multiple registration of same datamap schemas)

Is any new testcase added?
No, existing test cases will take care

This closes #3642

2 years ago[HOTFIX] optimize module dependency
QiangCai [Tue, 3 Mar 2020 09:21:11 +0000 (17:21 +0800)] 
[HOTFIX] optimize module dependency

Why is this PR needed?
there are many redundancy module dependencies

What changes were proposed in this PR?
1.optimize module dependency
2.fix HiveExample testcase
3.avoid to getOrCreate sparkSession in testcase again
4.add more testcases

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3652

2 years ago[CARBONDATA-3716] Fixed spark 2.4 UT failures
akkio-97 [Mon, 2 Mar 2020 07:02:32 +0000 (12:32 +0530)] 
[CARBONDATA-3716] Fixed spark 2.4 UT failures

Why is this PR needed?

Issue:
a) In 2.4 subquery alias produces an output set with alias identifier(that is both database_name and table_name) which causes failures.
Solution- Get subquery alias output with only table_name as alias
b) In 2.4 a new variable was introduced "spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation" which is by default set to "false".
While refreshing table In 2.4 we need to set this variable to "true" in order to create table in non empty location.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3629

2 years ago[CARBONDATA-3348] Fix the case insensitive validation for duplicate sort column.
Nihal kumar ojha [Mon, 2 Mar 2020 04:16:50 +0000 (09:46 +0530)] 
[CARBONDATA-3348] Fix the case insensitive validation for duplicate sort column.

Why is this PR needed?
Currently the column name with different case(upper and lower)
is getting considered as different columns for sort properties.

What changes were proposed in this PR?
Added the case insensitive validation for duplicate sort column.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3647

2 years ago[CARBONDATA-3715]Fix Timeseries Query Rollup failure for timeseries column of Date...
Indhumathi27 [Fri, 21 Feb 2020 05:59:32 +0000 (11:29 +0530)] 
[CARBONDATA-3715]Fix Timeseries Query Rollup failure for timeseries column of Date type

Why is this PR needed?

Issue 1:
Timeseries query with timeseries column as date,is throwing parsing exception after rollup, because while forming sql for cast expression, it is taking wrong attribute name

Issue 2:
to_date() function has case sensitive issues while rewriting the plan

What changes were proposed in this PR?

Issue 1:
If query is rolled up for date, then take attribute name for forming sql for cast expression.

Issue 2:
Convert cast expression child to lower case during rewrite

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3630

2 years ago[HOTFIX] Remove spark dependency in Processing module
Indhumathi27 [Mon, 2 Mar 2020 08:24:20 +0000 (13:54 +0530)] 
[HOTFIX] Remove spark dependency in Processing module

Why is this PR needed?
Remove spark dependency in Processing module, as it is not required

What changes were proposed in this PR?
Removed spark dependency in Processing module

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3650

2 years ago[CARBONDATA-3719] upgraded hive version to 3.1.0
kunal642 [Sun, 23 Feb 2020 08:24:29 +0000 (13:54 +0530)] 
[CARBONDATA-3719] upgraded hive version to 3.1.0

Why is this PR needed?
Upgrade hive version to take advantages of new optimizatons n hive.

What changes were proposed in this PR?
Version upgrade and compilation fixes for same

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3636

2 years ago[CARBONDATA-3723] Fix insert failure when partition column is a first column of proje...
ajantha-bhat [Wed, 26 Feb 2020 06:55:43 +0000 (12:25 +0530)] 
[CARBONDATA-3723] Fix insert failure when partition column is a first column of projection in MV

Why is this PR needed?
For Alter table drop and add column scenarios, partition columns
may not be in the end of create-order column. So, added a logic
to keep the partition column in the end in #3634.

But partition may not be the last projection column during mv creation.
So now, create order partition is kept last, but the projection is not last.
Hence the insert gives wrong data or fails.

What changes were proposed in this PR?
rearrage partition to last in create order columns, only for alter table scenarios

This closes #3640

2 years ago[CARBONDATA-3720] Support alter table scenario for new insert into flow
ajantha-bhat [Sun, 23 Feb 2020 05:34:30 +0000 (11:04 +0530)] 
[CARBONDATA-3720] Support alter table scenario for new insert into flow

Why is this PR needed?
Currently, the rearrange logic is based on schema ordinal.

For alter table drop and add columns with/without partition, schema ordinal based re arrange may not work as index will be outside the projection size. This logic become complex to handle.

Hence don't use schema ordinal for rerrange, implemented a position map based rearrange.

What changes were proposed in this PR?
Implemented a position map based rearrange.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3634

2 years ago[CARBONDATA-3637] Use optimized insert flow for MV and insert stage command
ajantha-bhat [Sat, 15 Feb 2020 03:12:42 +0000 (08:42 +0530)] 
[CARBONDATA-3637] Use optimized insert flow for MV and insert stage command

Why is this PR needed?
MV and insert stage can use the new optimized insert into flow.

Also In the new insert into flow, found one issue with the partition column. Fixed it.

If the catalog table schema is already rearranged, don't rearrange again.
Timestamp converter was not handled for 0 value. Need to set it to Null when it is 0.
While deriving the index for the convert to 3 step for new insert flow, order was based on internal partition order, instead of internal order.

What changes were proposed in this PR?

changed MV and insert stage command to use optimized insert flow.

After this changes,
b. CarbonInsertIntoCommand -- insert DML, CTAS DML, MV, insert stage command.
c. CarbonInsertIntoWithDf -- old flow which supports bad record handling with converter step method that process update, compaction, df writer, alter table scenarios [some problem in rearranging now]

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3615

2 years ago[CARBONDATA-3710] Make stage files queryable
Jacky Li [Mon, 17 Feb 2020 11:06:37 +0000 (19:06 +0800)] 
[CARBONDATA-3710] Make stage files queryable

Why is this PR needed?
Currenlty, stage files are written by SDK to a temp folder inside carbondata table path, but it is only queryable after calling "INSERT INTO tableName STAGE" command, it makes data latency longer.

What changes were proposed in this PR?
This PR is to add a feature to make stage files queryable before inserting them into the table.
Since these stage files do not have index, they need to be scanned like normal columnar files

Does this PR introduce any user interface change?
Yes (One configuration called "carbon.query.stage.input.enable" is added, document added)

Is any new testcase added?
No (current testcase is enhanced to test querying the stage files, see TestCarbonWriter)

This closes #3627

2 years ago[CARBONDATA-3705] Support create and load MV for spark datasource table
Jacky Li [Tue, 18 Feb 2020 13:01:29 +0000 (21:01 +0800)] 
[CARBONDATA-3705] Support create and load MV for spark datasource table

Why is this PR needed?
Materialized View is a feature built on top of Spark, it should support not only carbondata format but also other formats.

What changes were proposed in this PR?
Added an API in CarbonMetaStore to lookup any relation, not just carbon relation
When creating MV, use newly added lookup relation to get all parent table relations. Use CatalogTable instead of CarbonTable whenever possible
Skip the segment handling when loading MV

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3625

2 years ago[Re-factory] Re-factory modules
QiangCai [Mon, 24 Feb 2020 09:31:18 +0000 (17:31 +0800)] 
[Re-factory] Re-factory modules

Why is this PR needed?
there are too many spark-related modules.

What changes were proposed in this PR?
1. update docs
2. merge spark-common, spark2, spark-datasource and spark-common-test
into integration/spark
3. fix all testcases after moving modules

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3592

2 years ago[Re-factory] Re-factory modules
QiangCai [Mon, 24 Feb 2020 09:19:38 +0000 (17:19 +0800)] 
[Re-factory] Re-factory modules

Why is this PR needed?
There are too many spark-related modules.

What changes were proposed in this PR?
1. move carbondata/store to carbondata/sdk
2. move examples/spark2 to examples/spark
3. move secondary_index to index/secondary-index
4. move datamap/mv to mv
5. move datamap to index

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

2 years ago[CARBONDATA-3688] Add compressor name in data file name
Jacky Li [Sat, 22 Feb 2020 12:27:07 +0000 (20:27 +0800)] 
[CARBONDATA-3688] Add compressor name in data file name

Why is this PR needed?
Currently there is no easy way to tell what compressor is used given one carbondata file unless to read the FileFooter in the file.

What changes were proposed in this PR?
Added compressor name in the carbondata file name, now the file name pattern is
partNo-taskNo-batchNo-bucketNo-segmentNo-timestamp.compressorName.carbondata

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3606

2 years ago[CARBONDATA-3695] Integrating deep learning framework PyTorch
xubo245 [Wed, 12 Feb 2020 15:38:18 +0000 (23:38 +0800)] 
[CARBONDATA-3695]  Integrating deep learning framework PyTorch

Why is this PR needed?
Nowadays AI model training is getting more and more popular. Currently many AI framework uses raw data files or row format data files for model training, it could not provide projection, filtering, and fast scan capability like in columnar store. So, if CarbonData supports AI framework, it can speed up model training by increase IO throughput, and provide more flexible training set selection ability to AI developers

What changes were proposed in this PR?

Does this PR introduce any user interface change?
Yes. Added a new interface for pytorch

def make_data_loader(reader, batch_size=1, collate_fn=decimal_friendly_collate):

Is any new testcase added?
Yes
pytorch_example_carbon_unified_api.py . and so on.

This closes #3617

2 years ago[HOTFIX] exclude servlet-api.jar and jsp-api.jar from dependency
Zhang Zhichao [Sun, 23 Feb 2020 07:19:58 +0000 (15:19 +0800)] 
[HOTFIX] exclude servlet-api.jar and jsp-api.jar from dependency

Why is this PR needed?
When run app in idea, spark ui will throw exception.

What changes were proposed in this PR?
servlet-api.jar 2.5 and jsp-api.jar 2.1 conflict with jetty, so exclude these two jars from dependencies.

Does this PR introduce any user interface change?
No
Is any new testcase added?
No

This closes #3635

2 years ago[CARBONDATA-3717] Fix inconsistent configs in docs
勉一 [Fri, 21 Feb 2020 11:35:30 +0000 (19:35 +0800)] 
[CARBONDATA-3717] Fix inconsistent configs in docs

Why is this PR needed?
Now there are more and more configs in CarbonData(maybe is too many that is hard to maintain).

I found a lot of confusing configs when I was using Carbon:

- `table_block_size` -> `table_blocksize`
- `sort.inmemory.size.in.mb` -> `sort.inmemory.size.inmb`
- unused config(useless):
  - carbon.number.of.cores
  - carbon.graph.rowset.size
  - carbon.enableXXHash
  - ....
What changes were proposed in this PR?
Fix wrong config docs;
Remove unused/meaningless config docs;

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3632

2 years ago[CARBONDATA-3679] Optimize local sort performance
Manhua [Sat, 15 Feb 2020 02:46:59 +0000 (10:46 +0800)] 
[CARBONDATA-3679] Optimize local sort performance

Why is this PR needed?
In local sort, multi-threads is used for each partition but adding rows to a same object with lock. Only after that, sort and write operations run.
For better performance, we want to do the sort and write(sortTemp file) operations in parallel.

What changes were proposed in this PR?
remove object lock when adding rows to (Unsafe)SortDataRows.
keep object lock in (Unsafe)IntermediateMerger to collect results of all threads.

For unsafe local sort, about 40% time is reduced with multi-cores in one case.

Performance related configuration includes: carbon.number.of.cores.while.loading & yarn.nodemanager.local-dirs

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3603

2 years ago[CARBONDATA-3689][CARBONDATA-3694] Separate Materialized View command from DataMap...
Jacky Li [Fri, 14 Feb 2020 10:01:20 +0000 (18:01 +0800)] 
[CARBONDATA-3689][CARBONDATA-3694] Separate Materialized View command from DataMap command

Why is this PR needed?
To better promote Materialized View usage, we can make Materialized View as an independent extension for Apache Spark
Many databases has materialized view command, carbondata should also use similar syntax instead of datamap syntax

What changes were proposed in this PR?
This PR adds Materialized View extension for spark:
Following SQL command are supported:

1. CREATE MATERIALIZED VIEW
2. DROP MATERIALIZED VIEW
3. SHOW MATERIALIZED VIEW
4. REFRESH MATERIALIZED VIEW

Following optimizer rules are added:
1. Rewrite SQL statement by matching existing MV and
select the lowest cost MV
This PR adds implementation of Materialized View related command, which is independent of DataMap command

This closes #3612

2 years ago[CARBONDATA-3709] Move stage_data directory to the $tablePath/ from $tablePath/Metadata/
liuzhi [Mon, 17 Feb 2020 13:02:31 +0000 (21:02 +0800)] 
[CARBONDATA-3709] Move stage_data directory to the $tablePath/ from $tablePath/Metadata/

Why is this PR needed?
The stage_data directory is data directory, but under the $tablePath/Metadata/ directory, it cause the metadata directory is not clean.

What changes were proposed in this PR?
Move stage_data directory to the $tablePath/ from $tablePath/Metadata/, and keep the $tablePath/Metadata/ directory not include any data.

This closes #3626

2 years ago[CARBONDATA-3637] Optimize insert into flow
ajantha-bhat [Thu, 26 Dec 2019 07:17:13 +0000 (15:17 +0800)] 
[CARBONDATA-3637] Optimize insert into flow

Why is this PR needed?
Currently insert performance is slow and memory usage is high as it is using load flow itself.
Hence optimizing insert flow in this PR.

What changes were proposed in this PR?
Optimize insert into flow

Separated load and insert command;
a. CarbonLoadDataCommand -- Command to process only Load DML
b. CarbonInsertIntoCommand -- Command to process insert DML and CTAS DML. This is the new optimized flow. It will be explained in detail later
c. CarbonInsertIntoWithDf -- old flow which supports bad record handling with converter step method that process update, compaction, df writer, Insert from stage, mv datamap, insert with values, alter table scenarios [some problem in rearranging now], insert from hive external table (raw data)

Note: In future many flows which are in CarbonInsertIntoWithDf will use optimized flow, once optimized flow is stable and well tested and performance is measured.

Added a carbon property carbon.enable.bad.record.handling.for.insert, by default this is false. Assuming user knows the data and no need of bad record handling. If insert has to go to old flow. Enable this property to true

Changes done for CarbonInsertIntoCommand
a. Avoid re-arranging of every row, by rearranging the projection itself.
b. Avoid converting each row from spark internal row to spark row. Directly using internal row till write step.
c. Avoid converting each row to string object and converter step. Just kept object level converter for direct dictionary and time stamp columns and complex data types, static partition.
d. New convert to 3 step logic as old logic cannot be used on rearranged schema.
e. Handled for all the flows like local sort, no sort, global sort, partition + all sort combination + complex data types.

This closes #3538

2 years agoWhy is this PR needed?
Jacky Li [Thu, 13 Feb 2020 10:24:29 +0000 (18:24 +0800)] 
Why is this PR needed?

In TableInfo, dataMapSchemaList and parentRelationIdentifiers are always empty.
If user create index or mv, neither of their schema is stored in TableInfo,
but only stored in systemfolder.

What changes were proposed in this PR?

This PR removes dataMapSchemaList and parentRelationIdentifiers in TableInfo class

This closes #3619

2 years ago[CARBONDATA-3680] core changes and load changes for SI integration
Indhumathi27 [Mon, 10 Feb 2020 14:05:31 +0000 (19:35 +0530)] 
[CARBONDATA-3680] core changes and load changes for SI integration

Why is this PR needed?
Currently we have datamaps like,* default datamaps* which are block and
blocklet and coarse grained datamaps like bloom, and fine grained
datamaps like lucene which helps in better pruning during query. What if we
introduce another kind of datamap which can hold blockletId as index? Initial level,
we call it as index which will work as a child table to the main table like we have
MV in our current code.

Yes, lets introduce the secondary index to carbon table which will be the
child table to main table and it can be created on column like we create
lucene datamap, where we give index columns to create index. In a similar way,
we create secondary index on column, so indexes on these column will be blocklet IDs
which will help in better pruning and faster query when we have a filter query on the
index column.

What changes were proposed in this PR?
introduced SI feature
it contains:

create SI table
load to SI
query from SI

This closes #3608

2 years agoadd Secondary index feature for better pruning
akashrn5 [Mon, 10 Feb 2020 14:01:54 +0000 (19:31 +0530)] 
add Secondary index feature for better pruning

2 years ago[CARBONDATA-3548] Polygon expression processing using unknown expression and filterin...
Venu Reddy [Wed, 5 Feb 2020 10:09:57 +0000 (15:39 +0530)] 
[CARBONDATA-3548] Polygon expression processing using unknown expression and filtering performance improvement

Why is this PR needed?
This PR improves the query processing performance of in_polygon UDF.

What changes were proposed in this PR?
At present, PolygonExpression processing leverages the existing
InExpression. PolygonExpression internally creates a InExpression as a
child to it. InExpression is constructed/build from the result of Quad
tree algorithm. Algorithm returns the list of ranges(with each range
having min and max Id for that range). And this list is a sorted one.
InExpression constitute of 2 childs. One child is a columnExpression(for
geohash column) and the other is a ListExpression( with List of
LiternalExpressions. One LiteralExpression for each Id returned from
algo).
Problems associated with this approach:

We expand the list of ranges(with each range having minand max) to all
individual Ids. And create LiteralExpression for each Id. Since we can
have large ranges(and the numerous ranges), it consumes huge amount of
memory in processing.
Due to same reason, it slows does the filter execution.

Modifications with this PR:
Instead we can use UnknownExpression with RowLevelFilterResolverImpl and
RowLevelFilterExecuterImpl processing. And override evaluate() method to
do the binary search on the list of ranges directly. This will
significanly improve the polygon filter query performance. And Polygon
filter expression type is not required anymore at Carbon-Core module.

Does this PR introduce any user interface change?
No.

Is any new testcase added?
Yes. Added an end to end test case

This closes #3616

2 years ago[HOTFIX] Remove unused parameter in TabelModel
Jacky Li [Wed, 12 Feb 2020 08:28:01 +0000 (16:28 +0800)] 
[HOTFIX] Remove unused parameter in TabelModel

Why is this PR needed?
parentTable and parentTableRelation are not used in the TableModel, they can be removed

What changes were proposed in this PR?
parentTable and parentTableRelation are removed in TableModel

This closes #3613

2 years ago[CARBONDATA-3684] Remove MDK and cardinality in write path
Jacky Li [Fri, 7 Feb 2020 05:05:43 +0000 (13:05 +0800)] 
[CARBONDATA-3684] Remove MDK and cardinality in write path

Why is this PR needed?
Since only DATE is dictionary now, MDK is always 4 bytes. We can simplify many places in write path to remove MDK and cardinality calculation to save memory

What changes were proposed in this PR?
MDK generation is removed
cardinality calculation is removed
some other unused declaration is removed

This closes #3598

2 years ago[HOTFIX] Allow space between input file paths
Manhua [Wed, 5 Feb 2020 08:05:58 +0000 (16:05 +0800)] 
[HOTFIX] Allow space between input file paths

Why is this PR needed?
When space exists between file paths, The input file does not exist is
thrown.

LOAD DATA INPATH 'hdfs:///data/file1.dat , hdfs:///data/file2.dat' INTO
TABLE ...

What changes were proposed in this PR?
trim space of each file path before usage

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3604

2 years ago[CARBONDATA-3548] Implement hash id generation and quadtree processing for polygon...
litao [Wed, 5 Feb 2020 11:11:22 +0000 (19:11 +0800)] 
[CARBONDATA-3548] Implement hash id generation and quadtree processing for polygon geo spatial queries

Why is this PR needed?
To support geo spatial feature in carbondata

What changes were proposed in this PR?
Implement hash id generation and quadtree processing for polygon geo
spatial queries

Does this PR introduce any user interface change?
No

Is any new testcase added?
Added functional UT, end to end test cases will be added in another PR

This closes #3481

2 years ago[HOTFIX] Concurrent insert test case failure fix
kunal642 [Tue, 11 Feb 2020 06:21:28 +0000 (11:51 +0530)] 
[HOTFIX] Concurrent insert test case failure fix

Why is this PR needed?
System.currentTimeMillis() is giving same results for 2 insert due to
which 1 load is deleting the temp folder for another load.

What changes were proposed in this PR?
1. Change to System.nanoTime()
2. if schema file is not present, look up the relation again to infer
the schema

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3610

2 years ago[CARBONDATA-3677] Fixed performance issue for drop table
kunal642 [Mon, 3 Feb 2020 15:22:13 +0000 (20:52 +0530)] 
[CARBONDATA-3677] Fixed performance issue for drop table

Why is this PR needed?
Drop table is very slow because of unnecessary jobs being fired to clear cache from executors.

What changes were proposed in this PR?
1. Clear the datamaps for embedded mode when the reader is closed to avoid firing a 2nd job.
2. While drop only fire the job to clear from executors if either the table has a CG datamap or index server is enabled.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3601

2 years ago[CARBONDATA-3676] Support clean carbon data files of stages.
liuzhi [Tue, 4 Feb 2020 04:13:38 +0000 (12:13 +0800)] 
[CARBONDATA-3676] Support clean carbon data files of stages.

Why is this PR needed?

At the end of the CarbonInsertFromStageCommand, the stage files will be cleared, but the data files which referenced by stage files will be not cleared. This could lead to a large backlog of data files。

What changes were proposed in this PR?

Provide a new command to allows us to delete data files which referenced by disabled table stages.
The new command is CarbonDeleteStageCommand.

Does this PR introduce any user interface change?
Yes

Is any new testcase added?
Yes

This closes #3602

2 years ago[CARBONDATA-3678] optimize list files in insert stage
h00424960 [Mon, 3 Feb 2020 06:49:39 +0000 (14:49 +0800)] 
[CARBONDATA-3678] optimize list files in insert stage

Why is this PR needed?
To optimize the insert stage files using iterator which can avoid listing all files under dir in case file_count is set in command, especially for s3/obs cases and this can reduce the time cost of driver.

What changes were proposed in this PR?
Use iterator to get limited num of stage files.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3600

2 years ago[CARBONDATA-3668] Fix compile issue of CarbonSessionCatalog for spark 2.4
QiangCai [Thu, 6 Feb 2020 01:18:02 +0000 (09:18 +0800)] 
[CARBONDATA-3668] Fix compile issue of CarbonSessionCatalog for spark 2.4

Why is this PR needed?
There is a compile issue of CarbonSessionCatalog for spark 2.4

What changes were proposed in this PR?
CarbonHiveSessionCatalog and CarbonSessionStateBuilder adapte spark 2.3 and 2.4

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3605

2 years ago[CARBONDATA-3668] CarbonSession should use old flow (non-CarbonExtensions flow)
QiangCai [Mon, 3 Feb 2020 09:38:30 +0000 (17:38 +0800)] 
[CARBONDATA-3668] CarbonSession should use old flow (non-CarbonExtensions flow)

Why is this PR needed?
Considering back-compatibility, CarbonSession should use old flow (not CarbonExtensions flow)

What changes were proposed in this PR?
1. Remove CarbonExtension from CarbonSession
2. Recover CarbonSessionCatalog

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3586

2 years ago[CARBONDATA-3674] remove Encoding.DICTIONARY and Encoding.DIRECT_DICTIONARY usage
Jacky Li [Wed, 29 Jan 2020 10:24:37 +0000 (18:24 +0800)] 
[CARBONDATA-3674] remove Encoding.DICTIONARY and Encoding.DIRECT_DICTIONARY usage

Why is this PR needed?
After Global Dictionary feature is deprecated, we can refactor the
Dict/NoDict usage. This PR is one of the effort for this refactory.

What changes were proposed in this PR?
This PR remove Encoding.DICTIONARY and Encoding.DIRECT_DICTIONARY usage
in if check. They are changed to check against DataTypes.DATE instead of
checking Encoding.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3595

2 years ago[CARBONDATA-3532] Support Query Rollup for MV TimeSeries Queries
Indhumathi27 [Tue, 3 Dec 2019 05:49:57 +0000 (11:19 +0530)] 
[CARBONDATA-3532] Support Query Rollup for MV TimeSeries Queries

Supported Query RollUp for MV TimeSeries queries.
How it is supported?
For each timeseries query, check if query can be rolled up from the existing datasets, by replacing the granularity in given user query. If query is rewritten and rolledUp, then add Select and Group by nodes on the rewritten query.

This closes #3495

2 years ago[CARBONDATA-3636]Timeseries query is not hitting datamap if granularity in query...
Indhumathi27 [Fri, 27 Dec 2019 12:40:06 +0000 (18:10 +0530)] 
[CARBONDATA-3636]Timeseries query is not hitting datamap if granularity in query is given case insensitive

Problem:
TimeSeriesUDF function has two parameters:

1.Column -> AttributeReference
2.Granularity -> Literal
For timeseries function having granularity with different case letters in Create datamap and actual query,
select query is not hitting the datamap. This is because, since we store granularity as Literal,
semanticEquals returns false, if granularity is of different case.

Solution:
For TimeSeriesFunction, check Literal value case insensitive

This closes #3541

2 years ago[CARBONDATA-3575] Remove redundant exception throws
Jacky Li [Wed, 29 Jan 2020 19:34:10 +0000 (03:34 +0800)] 
[CARBONDATA-3575] Remove redundant exception throws

Remove redundant exception throws

This closes #3597

2 years ago[CARBONDATA-3548]Geospatial Support: Modified to create and load the table with geo...
Venu Reddy [Wed, 20 Nov 2019 06:55:42 +0000 (12:25 +0530)] 
[CARBONDATA-3548]Geospatial Support: Modified to create and load the table with geo spatial index column and added InPolygon UDF

Following changes made with this PR:

Added a table property index_handler to create an index column
implicitly out of existing table schema columns during table create
process. And append it to sort columns.
CREATE TABLE carbontable(

longitude INT,
latitude INT,
…)
STORED AS carbondata
TBLPROPERTIES ('INDEX_HANDLER'='mygeohash',
'INDEX_HANDLER.mygeohash.type'='geohash',
'INDEX_HANDLER.mygeohash.sourcecolumns'='longitude, latitude')

Custom index handler. This handler allows user to create a new column
from the set of schema columns. Newly created column name is same as
that of handler name. type and sourcecolumns properties for the handler
are mandatory properties. At present, only supported value for type
property is 'geohash'.

Modified load flow to allow the custom index value generation for the
above created index column during row parse and converter steps.

Alter add column/drop column/rename/type change, describe formatted DDLs

modified to consider the index column during their processing.

Added InPolygon UDF and query process for polygon expression.

User query can contain InPolygon UDF with series of points (i.e.,

longitude and latitude columns) as filter condition. First and last
points being same. All the points when plotted and connected forms a
closed geometry object. And query is used to fetch all the points lying
within the closed geometry object.

SELECT column1, column2 from carbonTable IN_POLYGON('115928764 40034712,
116098022 40035764116091156 39961333115926704 3996422811592876
40034712)

This closes #3436

2 years ago[CARBONDATA-3667] Insert stage recover processing of the partition table throw except...
h00424960 [Sun, 26 Jan 2020 13:29:11 +0000 (21:29 +0800)] 
[CARBONDATA-3667] Insert stage recover processing of the partition table throw exception "the unexpected 0 segment found"

Why is this PR needed?
  Recover processing when executing insert stage a partition table throw exception "the unexpected 0 segment found"
  The reason is the snapshot content of partition table is wrong.

What changes were proposed in this PR?
  Let's review the recover processing's purpose, when the segment is loaded successfully, but fail to clean the stage files, the stage(data) will be loaded again which leads to repetition of data. Before, we expect to save a snapshot file consists of segment id and stage file list, the stage files failed to clean can be clean again when we found the corresponding segment has been loaded successfully. But the segmentid can't be achieve while loading partition table, in the other words, we can't get the right snapshot for partition table.
  After discussion, we believe that this problem can also be alleviated by adding retry mechanism when deleting stage files. Thus, there are two changes were proposed which is shown below.
  1) Remove recover processing of Insert stage command.
  2) Add Retry to delete stage files.

Does this PR introduce any user interface change?
  No

Is any new testcase added?
  No

This closes #3589

2 years ago[CARBONDATA-3586][CARBONDATA-3587][CARBONDATA-3595]Adding valid segments into segments
Vikram Ahuja [Mon, 18 Nov 2019 06:13:30 +0000 (11:43 +0530)] 
[CARBONDATA-3586][CARBONDATA-3587][CARBONDATA-3595]Adding valid segments into segments
to be refreshed map before inserting segments to index server

Modification reason:
After select query the cache is doubled and the drop metacache is not removing the
cache in Spark 2.1 Carbon for the Index Server

Modification Content:
The preprimed segments were considered as invalid segments during the select query
as datamapstoremanager had no information of them and was sent to a different executor
during select query which was inturn doubling the cache. So the valid segments before
prepriming are sent into the map for them to be considered as valid segments during
select query and thus the query going into the same Index Server executor as during load.

This closes #3466

2 years ago[CARBONDATA-3664]Add SchemaEvolutionEntry after alter set sort columns
akashrn5 [Tue, 14 Jan 2020 07:46:33 +0000 (13:16 +0530)] 
[CARBONDATA-3664]Add SchemaEvolutionEntry after alter set sort columns

Why is this PR needed?
Alter set sort columns is changing schema but evolution entry is not made

What changes were proposed in this PR?
Once we do set sort columns, we change the schema which changes the column order, so make an
evolution entry for it.

This closes #3579

2 years ago[CARBONDATA-3605] Remove global dictionary in query
Jacky Li [Wed, 22 Jan 2020 08:43:34 +0000 (16:43 +0800)] 
[CARBONDATA-3605] Remove global dictionary in query

Why is this PR needed?
Global dictionary feature is deprecated, it should be removed in query flow

What changes were proposed in this PR?
Global dictionary related analyzer rules and late decode optimizer strategy is removed
Global dictionary related filter processing is removed in read flow in carbon-core module

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3550

2 years ago[CARBONDATA-3648] Support Alter Table Compaction Level Threshold
h00424960 [Tue, 31 Dec 2019 13:50:25 +0000 (21:50 +0800)] 
[CARBONDATA-3648] Support Alter Table Compaction Level Threshold

Modification reason:
(1) The Alter Table sould support Compaction Level Threshold.
(2) The upper limit of Compaction Level Threshold is 100, which is too small to meet the scenario with massive small files
(3) There is a bug to limit alter table in windows env.

Modification content:
(1) AlterTableUtil support alter Compaction_Level_Threshold
(2) CarbonProperties increases the upper limit of Compaction_Level_Threshold to 10000 from 100.
(3) Fix the bug which limit alter table in windows env

This closes #3553

2 years ago[CARBONDATA-3669] Delete Physical Partition When Drop Partition
h00424960 [Wed, 22 Jan 2020 06:27:23 +0000 (14:27 +0800)] 
[CARBONDATA-3669] Delete Physical Partition When Drop Partition

Why is this PR needed?
When drop partition, hive will clean the dictory and data, but carbondata won't, the customers confuse about that. Maybe we should keep same with hive in carbondata.

What changes were proposed in this PR?
When drop partition, set force delete physical partition to true.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3590

2 years ago[HOTFIX] fix compile error for flink module with spark 2.4
Zhang Zhichao [Wed, 22 Jan 2020 15:51:17 +0000 (23:51 +0800)] 
[HOTFIX] fix compile error for flink module with spark 2.4

fix compile error for flink module with spark 2.4

This closes #3591

2 years ago[CARBONDATA-3514] Support spark 2.4 integration
Jacky Li [Wed, 8 Jan 2020 15:26:25 +0000 (23:26 +0800)] 
[CARBONDATA-3514] Support spark 2.4 integration

Why is this PR needed?
CarbonData integration with Spark 2.4 is a long expected feature from community

What changes were proposed in this PR?
1. Support integration with Spark 2.4
2. Removing support of Spark 2.1 and 2.2

Does this PR introduce any user interface change?
Yes. New API from Spark 2.4 can be used to access CarbonData

Is any new testcase added?
No

This closes #3576

2 years ago[CARBONDATA-3662] Changes to show metacache command
Vikram Ahuja [Wed, 8 Jan 2020 05:58:02 +0000 (11:28 +0530)] 
[CARBONDATA-3662] Changes to show metacache command

Why is this PR needed?
1. There is no command to show the cache occupied by each of the
executors(only applicable for index server).
This command will not show per table, only per node
2. Show metacache command does not show the complete cache used used by IndexServer side and Driver side. It just shows the total of both of them.

What changes were proposed in this PR?
1. To change show metacache command to show executor metacache, where the "executor" keyword is optional.
2. Added TOTAL cache value separately for Index Server and Driver.

This closes #3565

2 years ago[DOC] CarbonExtensions doc
QiangCai [Mon, 20 Jan 2020 08:25:05 +0000 (16:25 +0800)] 
[DOC] CarbonExtensions doc

Why is this PR needed?
explain how to use CarbonExtensions in spark

What changes were proposed in this PR?
Document is updated to introduce CarbonExtensions

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3585

2 years ago[HOTFIX] Fix INSERT STAGE footer read error
Jacky Li [Wed, 8 Jan 2020 06:54:25 +0000 (14:54 +0800)] 
[HOTFIX] Fix INSERT STAGE footer read error

Why is this PR needed?
There are 2 issues:
1. INSERT STAGE will skip bytes to read the last long in the carbondata file as
the offset to the footer, but sometimes DFS is not skipping the right byte size
2. When error occurs, segment status is not in SUCCESS state, but recovery
handling is not doing correctly in INSERT STAGE command

What changes were proposed in this PR?
1. In CarbonFooterReaderV3.readFooterVersion3, if offset is not set by
caller, read it from corresponding index file.
2. In CarbonInsertFromStageCommand, when recovery is required, delete the
segment entry if the entry is not in SUCESS state.

This closes #3561

2 years ago[CARBONDATA-3666] Avoided listing of table dir in refresh command
kunal642 [Thu, 16 Jan 2020 08:58:57 +0000 (14:28 +0530)] 
[CARBONDATA-3666] Avoided listing of table dir in refresh command

Why is this PR needed?
Currently if a refresh command is fired on a parquet table using carbon session then carbon will list all the tables and check whether the table exists or not, then we check if the schema file exists or not by listing the Metadata folder. This can be a problem in cloud scenarios as the listing on S3 is slow.

What changes were proposed in this PR?
get the metadata for the specified table, Then go for table listing only if the provider is carbon or the table is not registered in hive

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3581

2 years ago[CARBONDATA-3271] Integrating deep learning framework TensorFlow
xubo245 [Tue, 21 Jan 2020 09:45:19 +0000 (17:45 +0800)] 
[CARBONDATA-3271] Integrating deep learning framework TensorFlow

    Why is this PR needed?
    Nowadays AI model training is getting more and more popular. Currently many AI framework uses raw data files or row format data files for model training, it could not provide projection, filtering, and fast scan capability like in columnar store. So, if CarbonData supports AI framework, it can speed up model training by increase IO throughput, and provide more flexible training set selection ability to AI developers

    What changes were proposed in this PR?
    Added a basic framework:
    - Supports shuffle read, which reads the data in random order when feeding data to training model for each epoch.
    - Supports data cache to improve reading speed for multiple epoch, including local-disk and memory-cache.
    - Supports parallel reading using thread pool and process pool in python.
    - Supports reading data in object storage
    - Supports manifest format and CarbonData folder

    Support tensorflow to use the framework:
    Tensorflow integration: New python API in pycarbon to support TensorFlow to read data from CarbonData files for training model

    Important files, please review in details:
    reader.py
    tensorflow.py
    carbon.py
    carbon_arrow_reader_worker.py
    carbon_py_dict_reader_worker.py
    carbon_reader.py
    carbon_tf_utils.py
    carbon_dataset_metadata.py

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

    Main new interfaces:
    ```
    def make_reader(dataset_url=None,
                    workers_count=10,
                    results_queue_size=100,
                    num_epochs=1,
                    obs_client=None,
                    shuffle=True,
                    schema_fields=None,
                    is_batch=True,
                    reader_pool_type='thread',
                    data_format='carbon',
                    cache_properties={'cache_type': None, 'cache_location': None, 'cache_size_limit': None,
                                      'cache_row_size_estimate': None, 'cache_extra_settings': None},
                    **properties
                    ):

    def make_tensor(reader, shuffling_queue_capacity=0, min_after_dequeue=0):

    def make_dataset(reader)
    ```

    Is any new testcase added?
    Yes

    https://issues.apache.org/jira/browse/CARBONDATA-3254

    Example:

    1. Setup

    cd /yourpath/carbondata/python/
    PYTHONPATH=/yourpath/carbondata/python/
    pip install . --user

    2. Generating a Pycarbon Dataset from MNIST Data

    User should do some config first:

    config pyspark and add carbon assembly jar to pyspark/jars folder, which can be compiled from CarbonData project.

    default Java sdk jar is in carbondata/store/sdk/target, user also can specific the jar location like by --carbon-sdk-path in generate_pycarbon_dataset.py.

    set JAVA_HOME, PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON in you system environment.

    This creates both a train and test carbon datasets:

    cd pycarbon/tests/mnist/dataset_with_unischema
    python generate_pycarbon_mnist.py

    if user didn't compile CarbonData, then they can specific CarbonData java SDK jar like:

     python generate_pycarbon_mnist.py --carbon-sdk-path  /your_path/carbondata/store/sdk/target/carbondata-sdk.jar

    3. Tensorflow training using the Carbon MNIST Dataset

    This will invoke a training run using MNIST carbondata,
    for 1 epochs, using a batch size of 100, and log every 10 intervals.

    python tf_example_carbon_unified_api.py
    if user didn't compile CarbonData, then they can specific CarbonData java SDK jar like:

    python  tf_example_carbon_unified_api.py --carbon-sdk-path  /your_path/carbondata/store/sdk/target/carbondata-sdk.jar

This closes #3588

2 years agoRevert "[CARBONDATA-3271] Integrating deep learning framework TensorFlow"
Jacky Li [Tue, 21 Jan 2020 09:39:01 +0000 (17:39 +0800)] 
Revert "[CARBONDATA-3271] Integrating deep learning framework TensorFlow"

This reverts commit 8bc2172e4cc6fc03795f506a656c3e91fa3c13ec.

2 years ago[CARBONDATA-3271] Integrating deep learning framework TensorFlow
kumarvishal09 [Mon, 29 Apr 2019 09:33:29 +0000 (17:33 +0800)] 
[CARBONDATA-3271] Integrating deep learning framework TensorFlow

Why is this PR needed?
Nowadays AI model training is getting more and more popular. Currently many AI framework uses raw data files or row format data files for model training, it could not provide projection, filtering, and fast scan capability like in columnar store. So, if CarbonData supports AI framework, it can speed up model training by increase IO throughput, and provide more flexible training set selection ability to AI developers

What changes were proposed in this PR?
Added a basic framework:
- Supports shuffle read, which reads the data in random order when feeding data to training model for each epoch.
- Supports data cache to improve reading speed for multiple epoch, including local-disk and memory-cache.
- Supports parallel reading using thread pool and process pool in python.
- Supports reading data in object storage
- Supports manifest format and CarbonData folder

Support tensorflow to use the framework:
Tensorflow integration: New python API in pycarbon to support TensorFlow to read data from CarbonData files for training model

Important files, please review in details:
reader.py
tensorflow.py
carbon.py
carbon_arrow_reader_worker.py
carbon_py_dict_reader_worker.py
carbon_reader.py
carbon_tf_utils.py
carbon_dataset_metadata.py

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

Main new interfaces:
```
def make_reader(dataset_url=None,
                workers_count=10,
                results_queue_size=100,
                num_epochs=1,
                obs_client=None,
                shuffle=True,
                schema_fields=None,
                is_batch=True,
                reader_pool_type='thread',
                data_format='carbon',
                cache_properties={'cache_type': None, 'cache_location': None, 'cache_size_limit': None,
                                  'cache_row_size_estimate': None, 'cache_extra_settings': None},
                **properties
                ):

def make_tensor(reader, shuffling_queue_capacity=0, min_after_dequeue=0):

def make_dataset(reader)
```

Is any new testcase added?
Yes

https://issues.apache.org/jira/browse/CARBONDATA-3254

Example:

1. Setup

cd /yourpath/carbondata/python/
PYTHONPATH=/yourpath/carbondata/python/
pip install . --user

2. Generating a Pycarbon Dataset from MNIST Data

User should do some config first:

config pyspark and add carbon assembly jar to pyspark/jars folder, which can be compiled from CarbonData project.

default Java sdk jar is in carbondata/store/sdk/target, user also can specific the jar location like by --carbon-sdk-path in generate_pycarbon_dataset.py.

set JAVA_HOME, PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON in you system environment.

This creates both a train and test carbon datasets:

cd pycarbon/tests/mnist/dataset_with_unischema
python generate_pycarbon_mnist.py

if user didn't compile CarbonData, then they can specific CarbonData java SDK jar like:

 python generate_pycarbon_mnist.py --carbon-sdk-path  /your_path/carbondata/store/sdk/target/carbondata-sdk.jar

3. Tensorflow training using the Carbon MNIST Dataset

This will invoke a training run using MNIST carbondata,
for 1 epochs, using a batch size of 100, and log every 10 intervals.

python tf_example_carbon_unified_api.py
if user didn't compile CarbonData, then they can specific CarbonData java SDK jar like:

python  tf_example_carbon_unified_api.py --carbon-sdk-path  /your_path/carbondata/store/sdk/target/carbondata-sdk.jar

This closes #3479

2 years ago[CARBONDATA-3503] Optimize Carbon SparkExtensions
QiangCai [Sat, 11 Jan 2020 10:12:01 +0000 (18:12 +0800)] 
[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

2 years ago[CARBONDATA-3645] BadRecords are inserted as NULL when column is of complex data...
Indhumathi27 [Tue, 31 Dec 2019 09:01:44 +0000 (14:31 +0530)] 
[CARBONDATA-3645] BadRecords are inserted as NULL when column is of complex data type and BAD_RECORDS_ACTION is IGNORE

Why is this PR needed?
In case if BAD_RECORDS_ACTION is IGNORE, Carbon should skip those bad records while loading. But in case of Complex data type, badrecords are inserted as NULL. Here, badRecordAdded flag is not set, from second BadRecord found,since message is already added to columnMessageMap for first found BadRecord.

What changes were proposed in this PR?
Set badRecordAdded flag, if badRecord is found.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3551

2 years ago[CARBONDATA-3663] Support loading stage files in batches
liuzhi [Tue, 14 Jan 2020 06:46:28 +0000 (14:46 +0800)] 
[CARBONDATA-3663] Support loading stage files in batches

Why is this PR needed?
When there are a lots of stage files in the stage directory, if load all of them in once time, the loading time will can not be control.
There need a way for users to specify the number of stage files per processing, to control the execution time of commands.

What changes were proposed in this PR?
Add a load option batch_file_count for users to specify the number of stage files per processing.

Does this PR introduce any user interface change?
Yes

Is any new testcase added?
Yes

This closes #3578

2 years ago[CARBONDATA-3646] [CARBONDATA-3647]: Fix query failure with Index Server
Vikram Ahuja [Fri, 27 Dec 2019 11:32:19 +0000 (17:02 +0530)] 
[CARBONDATA-3646] [CARBONDATA-3647]: Fix query failure with Index Server

Problems:
1. Select * query fails when using index server.
2. Filter query failure with Index server when loaded with global_sort_partition = 100000,
giving Null pointer exception

Solution:
1. Indexservertmp folder configuration has been changed. The Indexservertmp
folder is now created outside the table, as it is not recommended to keep it inside the table.
2. table.getAbsoluteTableIdentifier() was giving NULL pointer exception
when table was NULL, this case has been handled.

This closes #3537

2 years ago[CARBONDATA-3657]Support alter hive table add columns with complex types
IceMimosa [Wed, 8 Jan 2020 17:12:10 +0000 (01:12 +0800)] 
[CARBONDATA-3657]Support alter hive table add columns with complex types

Why is this PR needed?
Alter hive add columns has some problems in carbon

What changes were proposed in this PR?
This PR will support add column for:
Map type
Array type
Struct type
Decimal type with precision and scale
Add columns with comments

Does this PR introduce any user interface change?
No

Is any new test case added?
Yes

This closes #3569

2 years ago[HOTFIX] Making maven repo changes in pom.xml
Pankaj Yadav [Thu, 16 Jan 2020 09:03:56 +0000 (14:33 +0530)] 
[HOTFIX] Making maven repo changes in pom.xml

Why is this PR needed?
To use https instead of http to connect central maven repo

What changes were proposed in this PR?
Changes made to use https instead of http to connect central maven repo
that is https://repo.maven.apache.org/maven2 instead of
http://repo.maven.apache.org/maven2

Link for clarification :
https://stackoverflow.com/questions/59763531/maven-dependencies-are-failing-with-501-error

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3582

2 years ago[CARBONDATA-3592] Fix query on bloom in case of multiple data files in one segment
kunal642 [Thu, 26 Sep 2019 05:18:02 +0000 (10:48 +0530)] 
[CARBONDATA-3592] Fix query on bloom in case of multiple data files in one segment

Problem:
1. Query on bloom datamap fails when there are multiple data files in one segment.
2. Query on bloom is giving wrong results in case of multiple carbondata files.

Solution:
1. Old pruned index files were cleared from the FilteredIndexSharedNames list. So further
pruning was not done on all the valid index files. Hence added a check to clear the index
files only in valid scenarios. Also handled the case where wrong blocklet id is passed while
creating the blocklet from relative blocklet id.
2. Make the partitions based on block path so that all the CarbonInputSplits in a MultiBlockSplit
are used for bloom reading. This means 1 task for 1 shard(unique block path).

This closes #3474

2 years ago[CARBONDATA-3492]: Added prepriming in the Index Server Documentation
Vikram Ahuja [Wed, 8 Jan 2020 06:29:21 +0000 (11:59 +0530)] 
[CARBONDATA-3492]: Added prepriming in the Index Server Documentation

This PR consists of the documentation changes for the feature Index Server Cache Prepriming.

This closes #3566

2 years ago[CARBONDATA-3627] C++ SDK support write data withSchemaFile
xubo245 [Sun, 22 Dec 2019 16:47:51 +0000 (00:47 +0800)] 
[CARBONDATA-3627] C++ SDK support write data withSchemaFile

C++ SDK support write data withSchemaFile, which can be used for add segment for transactional table

This closes #3526

2 years ago[HOTFIX] Fix After alter table add column schemaOrdinal is not continuous
ajantha-bhat [Tue, 14 Jan 2020 02:54:02 +0000 (10:54 +0800)] 
[HOTFIX] Fix After alter table add column schemaOrdinal is not continuous

Why is this PR needed?

Consider a scenario with complex columns[c1 int, c2 array, c3 array] here schema ordinal of child columns are -1. so c1, c2, c3 has ordinal 0, 1, 2. After alter table add column "c4 int", its ordinal should be 3. But currently it is 6 (due to flat column schema).
This will give problem when this ordinal is referred for some other functionality like rearrange projection columns.

What changes were proposed in this PR?

make schema ordinal continuous by collecting previous schema ordinal max.

Does this PR introduce any user interface change?

No

Is any new testcase added?

No

This closes #3577

2 years ago[CARBONDATA-3658] Prune and Cache only Matched partitioned segments for filter on...
Indhumathi27 [Wed, 8 Jan 2020 14:27:08 +0000 (19:57 +0530)] 
[CARBONDATA-3658] Prune and Cache only Matched partitioned segments for filter on Partitioned table

Why is this PR needed?

For filter on parition column, we are currently loading all index files to cache. Since VM's in cloud scenarios, does not have much memory, all index files will be too big to store in driver.

What changes were proposed in this PR?

For filter on partition column, load only index for matched segments.

Does this PR introduce any user interface change?

No

Is any new testcase added?

Yes

This closes #3568

2 years ago[CARBONDATA-3659] Fix issues with alluxio without host and port
ravipesala [Mon, 30 Dec 2019 03:37:16 +0000 (11:37 +0800)] 
[CARBONDATA-3659] Fix issues with alluxio without host and port

Why is this PR needed?

When alluxio path is provided without host and port like alluxio:///user/warehouse then carbon cannot read or write data because of path comparison fails and extracting parent path fails.

What changes were proposed in this PR?

Use Path object to compare paths. And use string utils to extract the parent path.

Does this PR introduce any user interface change?

No

Is any new testcase added?

No

This closes #3571

2 years ago[CARBONDATA-3623]: Fixed global sort compaction failure on timestamp column
akkio-97 [Wed, 18 Dec 2019 13:54:13 +0000 (19:24 +0530)] 
[CARBONDATA-3623]: Fixed global sort compaction failure on timestamp column

Problem:
In Carbondata the timestamp is converted into long and stored in RDD.
While collect(action) is applied on dataframe it gives an error due to the confliction between data types that is - long in carbonScanRDD(from which dataframe is created) and Timestamp in schema.

Solution:
Called Dataset.ofRows(LogicalPlan) which returns the dataframe. Used Set command which sets all segments to be compacted. And Unset once the compaction is finished.

This closes #3515

2 years ago[CARBONDATA-3656] set Default TaskNo To Avoid Conflicts when concurrently write data...
xubo245 [Wed, 8 Jan 2020 14:20:01 +0000 (22:20 +0800)] 
[CARBONDATA-3656] set Default TaskNo To Avoid Conflicts when concurrently write data by SDK

Why is this PR needed?

Fix Conflicts when concurrently write data by SDK and didn't set taskNo

What changes were proposed in this PR?

set Default TaskNo when TaskNo is null

Does this PR introduce any user interface change?

No

Is any new testcase added?

No

This closes #3567