Dan Burkert has submitted this change and it was merged.

Change subject: Remove default table partitioning
......................................................................


Remove default table partitioning

This commit removes the current default of creating tables with range
partitioning over the primary key columns with no splits. This default is
problematic because it results in a single tablet, which is a known
anti-pattern. Kudu can't predict appropriate split rows without knowledge of the
dataset, so creating default splits is not technically feasible.

A better default to range partitioning would be to hash partition on the primary
key columns with a number of buckets based on the number of tablet servers.
Unfortunately, it's similarly difficult to predict an appopriate number of hash
buckets with knowledge of the data set.

Since changing the default would be a breaking change, and we don't currently
have a bullet-proof default option, this commit changes the table creator in the
C++ and Java clients to force users to explicitly specify at least range or
hash partitioning. Users who really do want a table with no partitioning (a
single tablet), can still explicitly set the range partition columns to an
empty list and provide no split rows.

Change-Id: I7021d7950f8dbb4918503ea6fab2e6ee35076064
Reviewed-on: http://gerrit.cloudera.org:8080/3131
Tested-by: Kudu Jenkins
Reviewed-by: Misty Stanley-Jones <mi...@apache.org>
(cherry picked from commit 0e7c257f950e8875fe9d6a541cc03918ae23912e)
Reviewed-on: http://gerrit.cloudera.org:8080/3229
Reviewed-by: Jean-Daniel Cryans
---
M docs/release_notes.adoc
M docs/schema_design.adoc
M 
java/kudu-client-tools/src/main/java/org/kududb/mapreduce/tools/IntegrationTestBigLinkedList.java
M 
java/kudu-client-tools/src/test/java/org/kududb/mapreduce/tools/ITImportCsv.java
M java/kudu-client/src/main/java/org/kududb/client/AsyncKuduClient.java
M java/kudu-client/src/main/java/org/kududb/client/CreateTableOptions.java
M java/kudu-client/src/main/java/org/kududb/client/KuduClient.java
M java/kudu-client/src/test/java/org/kududb/client/BaseKuduTest.java
M java/kudu-client/src/test/java/org/kududb/client/TestAsyncKuduClient.java
M java/kudu-client/src/test/java/org/kududb/client/TestAsyncKuduSession.java
M java/kudu-client/src/test/java/org/kududb/client/TestFlexiblePartitioning.java
M java/kudu-client/src/test/java/org/kududb/client/TestHybridTime.java
M java/kudu-client/src/test/java/org/kududb/client/TestKuduClient.java
M java/kudu-client/src/test/java/org/kududb/client/TestKuduSession.java
M java/kudu-client/src/test/java/org/kududb/client/TestKuduTable.java
M java/kudu-client/src/test/java/org/kududb/client/TestLeaderFailover.java
M java/kudu-client/src/test/java/org/kududb/client/TestMasterFailover.java
M java/kudu-client/src/test/java/org/kududb/client/TestRowErrors.java
M java/kudu-client/src/test/java/org/kududb/client/TestRowResult.java
M java/kudu-client/src/test/java/org/kududb/client/TestScanPredicate.java
M java/kudu-client/src/test/java/org/kududb/client/TestScannerMultiTablet.java
M java/kudu-client/src/test/java/org/kududb/client/TestStatistics.java
M java/kudu-client/src/test/java/org/kududb/client/TestTimeouts.java
M java/kudu-flume-sink/src/test/java/org/kududb/flume/sink/KuduSinkTest.java
M 
java/kudu-mapreduce/src/test/java/org/kududb/mapreduce/ITKuduTableInputFormat.java
M 
java/kudu-mapreduce/src/test/java/org/kududb/mapreduce/ITKuduTableOutputFormat.java
M java/kudu-mapreduce/src/test/java/org/kududb/mapreduce/ITOutputFormatJob.java
M java/kudu-spark/src/test/scala/org/kududb/spark/kudu/DefaultSourceTest.scala
M java/kudu-spark/src/test/scala/org/kududb/spark/kudu/TestContext.scala
M python/kudu/client.pyx
M python/kudu/tests/common.py
M python/kudu/tests/test_client.py
M src/kudu/benchmarks/tpch/rpc_line_item_dao.cc
M src/kudu/client/client-test.cc
M src/kudu/client/client.cc
M src/kudu/client/client.h
M src/kudu/client/predicate-test.cc
M src/kudu/client/samples/sample.cc
M src/kudu/integration-tests/all_types-itest.cc
M src/kudu/integration-tests/alter_table-randomized-test.cc
M src/kudu/integration-tests/alter_table-test.cc
M src/kudu/integration-tests/create-table-itest.cc
M src/kudu/integration-tests/create-table-stress-test.cc
M src/kudu/integration-tests/delete_table-test.cc
M src/kudu/integration-tests/full_stack-insert-scan-test.cc
M src/kudu/integration-tests/fuzz-itest.cc
M src/kudu/integration-tests/linked_list-test-util.h
M src/kudu/integration-tests/master_failover-itest.cc
M src/kudu/integration-tests/master_replication-itest.cc
M src/kudu/integration-tests/remote_bootstrap-itest.cc
M src/kudu/integration-tests/test_workload.cc
M src/kudu/integration-tests/ts_itest-base.h
M src/kudu/integration-tests/ts_tablet_manager-itest.cc
M src/kudu/integration-tests/update_scan_delta_compact-test.cc
M src/kudu/integration-tests/write_throttling-itest.cc
M src/kudu/tools/ksck_remote-test.cc
56 files changed, 226 insertions(+), 140 deletions(-)

Approvals:
  Jean-Daniel Cryans: Looks good to me, approved
  Kudu Jenkins: Verified



-- 
To view, visit http://gerrit.cloudera.org:8080/3229
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I7021d7950f8dbb4918503ea6fab2e6ee35076064
Gerrit-PatchSet: 2
Gerrit-Project: kudu
Gerrit-Branch: branch-0.9.x
Gerrit-Owner: Dan Burkert <d...@cloudera.com>
Gerrit-Reviewer: Dan Burkert <d...@cloudera.com>
Gerrit-Reviewer: Jean-Daniel Cryans
Gerrit-Reviewer: Kudu Jenkins

Reply via email to