@@ -35,7 +35,7 @@ object CarbonPartitionExample {
35
35
val storeLocation = s " $rootPath/examples/spark2/target/store "
36
36
val warehouse = s " $rootPath/examples/spark2/target/warehouse "
37
37
val metastoredb = s " $rootPath/examples/spark2/target "
38
- val testData = s " $rootPath/examples/spark2 /src/main /resources/partition_data.csv "
38
+ val testData = s " $rootPath/integration/spark-common-test /src/test /resources/partition_data.csv "
39
39
40
40
CarbonProperties .getInstance()
41
41
.addProperty(CarbonCommonConstants .CARBON_TIMESTAMP_FORMAT , " yyyy/MM/dd" )
@@ -51,45 +51,70 @@ object CarbonPartitionExample {
51
51
52
52
spark.sparkContext.setLogLevel(" WARN" )
53
53
54
- // none partition table
54
+ // range partition with bucket defined
55
55
spark.sql(" DROP TABLE IF EXISTS t0" )
56
56
spark.sql("""
57
57
| CREATE TABLE IF NOT EXISTS t0
58
58
| (
59
+ | id Int,
59
60
| vin String,
60
- | logdate Timestamp,
61
61
| phonenumber Long,
62
62
| country String,
63
- | area String
63
+ | area String,
64
+ | salary Int
64
65
| )
66
+ | PARTITIONED BY (logdate Timestamp)
65
67
| STORED BY 'carbondata'
68
+ | TBLPROPERTIES('PARTITION_TYPE'='RANGE',
69
+ | 'RANGE_INFO'='2014/01/01, 2015/01/01, 2016/01/01',
70
+ | 'BUCKETNUMBER'='3',
71
+ | 'BUCKETCOLUMNS'='vin')
66
72
""" .stripMargin)
67
73
68
- // range partition
74
+ // none partition table
69
75
spark.sql(" DROP TABLE IF EXISTS t1" )
70
76
spark.sql("""
71
77
| CREATE TABLE IF NOT EXISTS t1
72
78
| (
79
+ | id Int,
73
80
| vin String,
81
+ | logdate Timestamp,
74
82
| phonenumber Long,
75
83
| country String,
76
84
| area String
77
85
| )
78
- | PARTITIONED BY (logdate Timestamp)
79
86
| STORED BY 'carbondata'
80
- | TBLPROPERTIES('PARTITION_TYPE'='RANGE',
81
- | 'RANGE_INFO'='2014/01/01, 2015/01/01, 2016/01/01')
87
+ """ .stripMargin)
88
+
89
+ // list partition
90
+ spark.sql(" DROP TABLE IF EXISTS t2" )
91
+ spark.sql("""
92
+ | CREATE TABLE IF NOT EXISTS t2
93
+ | (
94
+ | id Int,
95
+ | vin String,
96
+ | logdate Timestamp,
97
+ | phonenumber Long,
98
+ | country String,
99
+ | salary Int
100
+ | )
101
+ | PARTITIONED BY (area String)
102
+ | STORED BY 'carbondata'
103
+ | TBLPROPERTIES('PARTITION_TYPE'='LIST',
104
+ | 'LIST_INFO'='Asia, America, Europe', 'DICTIONARY_EXCLUDE' ='area')
82
105
""" .stripMargin)
83
106
84
107
// hash partition
85
108
spark.sql(" DROP TABLE IF EXISTS t3" )
86
109
spark.sql("""
87
110
| CREATE TABLE IF NOT EXISTS t3
88
111
| (
112
+ | id Int,
89
113
| logdate Timestamp,
90
114
| phonenumber Long,
91
115
| country String,
92
- | area String
116
+ | area String,
117
+ | salary Int
93
118
| )
94
119
| PARTITIONED BY (vin String)
95
120
| STORED BY 'carbondata'
@@ -101,17 +126,40 @@ object CarbonPartitionExample {
101
126
spark.sql("""
102
127
| CREATE TABLE IF NOT EXISTS t5
103
128
| (
129
+ | id Int,
104
130
| vin String,
105
131
| logdate Timestamp,
106
132
| phonenumber Long,
107
- | area String
133
+ | area String,
134
+ | salary Int
108
135
|)
109
136
| PARTITIONED BY (country String)
110
137
| STORED BY 'carbondata'
111
138
| TBLPROPERTIES('PARTITION_TYPE'='LIST',
112
- | 'LIST_INFO'='(China,United States ),UK ,japan ,(Canada,Russia), South Korea ')
139
+ | 'LIST_INFO'='(China, US ),UK ,Japan ,(Canada,Russia, Good, NotGood), Korea ')
113
140
""" .stripMargin)
114
141
142
+ // load data into partition table
143
+ spark.sql(s """
144
+ LOAD DATA LOCAL INPATH ' $testData' into table t0 options('BAD_RECORDS_ACTION'='FORCE')
145
+ """ )
146
+ spark.sql(s """
147
+ LOAD DATA LOCAL INPATH ' $testData' into table t5 options('BAD_RECORDS_ACTION'='FORCE')
148
+ """ )
149
+
150
+ // alter list partition table t5 to add a partition
151
+ spark.sql(s """ Alter table t5 add partition ('OutSpace') """ .stripMargin)
152
+ // alter list partition table t5 to split partition 4 into 3 independent partition
153
+ spark.sql(
154
+ s """
155
+ Alter table t5 split partition(4) into ('Canada', 'Russia', '(Good, NotGood)')
156
+ """ .stripMargin)
157
+
158
+ spark.sql(""" select * from t5 where country = 'Good' """ ).show(100 , false )
159
+
160
+ spark.sql(" select * from t0 order by salary " ).show(100 , false )
161
+ spark.sql(" select * from t5 order by salary " ).show(100 , false )
162
+
115
163
// hive partition table
116
164
spark.sql(" DROP TABLE IF EXISTS t7" )
117
165
spark.sql("""
@@ -130,6 +178,7 @@ object CarbonPartitionExample {
130
178
spark.sql(s " CREATE DATABASE partitionDB " )
131
179
spark.sql(s """
132
180
| CREATE TABLE IF NOT EXISTS partitionDB.t9(
181
+ | id Int,
133
182
| logdate Timestamp,
134
183
| phonenumber Int,
135
184
| country String,
@@ -145,11 +194,11 @@ object CarbonPartitionExample {
145
194
146
195
// show partitions
147
196
try {
148
- spark.sql(""" SHOW PARTITIONS t0 """ ).show(100 , false )
197
+ spark.sql(""" SHOW PARTITIONS t1 """ ).show(100 , false )
149
198
} catch {
150
199
case ex : AnalysisException => LOGGER .error(ex.getMessage())
151
200
}
152
- spark.sql(""" SHOW PARTITIONS t1 """ ).show(100 , false )
201
+ spark.sql(""" SHOW PARTITIONS t0 """ ).show(100 , false )
153
202
spark.sql(""" SHOW PARTITIONS t3""" ).show(100 , false )
154
203
spark.sql(""" SHOW PARTITIONS t5""" ).show(100 , false )
155
204
spark.sql(""" SHOW PARTITIONS t7""" ).show(100 , false )
0 commit comments