Skip to content

Commit 82cf248

Browse files
refactor tableutils into its own module catalog (#679)
## Summary - Creates a `catalog` module to replace the `format` one we had. - Add a new bazel lib target for the `catalog` module - Move TableUtils there, it should live alongside the formatprovider stuff. - Rename imports - Followup is to remove the dependency on the main `spark` lib. This requires decoupling with `Extensions`. Then we can drastically slim the deps down in cloud gcp. ## Checklist - [ ] Added Unit Tests - [ ] Covered by existing CI - [ ] Integration tested - [ ] Documentation update <!-- av pr metadata This information is embedded by the av CLI when creating PRs to track the status of stacks when using Aviator. Please do not delete or edit this section of the PR. ``` {"parent":"main","parentHead":"","trunk":""} ``` --> Co-authored-by: Thomas Chow <[email protected]>
1 parent 3a7aa61 commit 82cf248

File tree

88 files changed

+142
-98
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+142
-98
lines changed

cloud_aws/src/test/scala/ai/chronon/integrations/aws/GlueCatalogTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package ai.chronon.integrations.aws
22

33
import ai.chronon.spark.ChrononHudiKryoRegistrator
44
import ai.chronon.spark.SparkSessionBuilder
5-
import ai.chronon.spark.TableUtils
5+
import ai.chronon.spark.catalog.TableUtils
66
import org.apache.spark.sql.SaveMode
77
import org.apache.spark.sql.SparkSession
88
import org.junit.Assert.assertEquals

cloud_aws/src/test/scala/ai/chronon/integrations/aws/HudiTableUtilsTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package ai.chronon.integrations.aws
22

33
import ai.chronon.spark.ChrononHudiKryoRegistrator
44
import ai.chronon.spark.SparkSessionBuilder
5-
import ai.chronon.spark.TableUtils
5+
import ai.chronon.spark.catalog.TableUtils
66
import org.apache.spark.sql.SparkSession
77
import org.junit.Assert.assertEquals
88
import org.junit.Assert.assertTrue

cloud_gcp/src/main/scala/ai/chronon/integrations/cloud_gcp/BigQueryExternal.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package ai.chronon.integrations.cloud_gcp
22

3-
import ai.chronon.spark.format.Format
3+
import ai.chronon.spark.catalog.Format
44
import com.google.cloud.bigquery._
55
import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
66
import org.apache.spark.sql.execution.FileSourceScanExec

cloud_gcp/src/main/scala/ai/chronon/integrations/cloud_gcp/BigQueryNative.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package ai.chronon.integrations.cloud_gcp
22

3-
import ai.chronon.spark.TableUtils
4-
import ai.chronon.spark.format.Format
3+
import ai.chronon.spark.catalog.TableUtils
4+
import ai.chronon.spark.catalog.Format
55
import com.google.cloud.bigquery.BigQueryOptions
66
import com.google.cloud.spark.bigquery.v2.Spark35BigQueryTableProvider
77
import org.apache.spark.sql.{DataFrame, SparkSession}

cloud_gcp/src/main/scala/ai/chronon/integrations/cloud_gcp/GcpFormatProvider.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package ai.chronon.integrations.cloud_gcp
2-
import ai.chronon.spark.format.{DefaultFormatProvider, Format, Iceberg}
2+
3+
import ai.chronon.spark.catalog.{DefaultFormatProvider, Format, Iceberg}
34
import com.google.cloud.bigquery._
45
import com.google.cloud.spark.bigquery.v2.Spark31BigQueryTable
56
import org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog

cloud_gcp/src/main/scala/ai/chronon/integrations/cloud_gcp/Spark2BigTableLoader.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import ai.chronon.api.MetaData
66
import ai.chronon.integrations.cloud_gcp.BigTableKVStore.ColumnFamilyQualifierString
77
import ai.chronon.integrations.cloud_gcp.BigTableKVStore.ColumnFamilyString
88
import ai.chronon.spark.SparkSessionBuilder
9-
import ai.chronon.spark.TableUtils
9+
import ai.chronon.spark.catalog.TableUtils
1010
import org.apache.spark.sql.functions
1111
import org.apache.spark.sql.functions.udf
1212
import org.rogach.scallop.ScallopConf

cloud_gcp/src/test/scala/ai/chronon/integrations/cloud_gcp/BigQueryCatalogTest.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package ai.chronon.integrations.cloud_gcp
22

3-
import ai.chronon.spark.format.{FormatProvider, Iceberg}
4-
import ai.chronon.spark.{SparkSessionBuilder, TableUtils}
3+
import ai.chronon.spark.SparkSessionBuilder
4+
import ai.chronon.spark.catalog.{FormatProvider, Iceberg, TableUtils}
55
import com.esotericsoftware.kryo.Kryo
66
import com.esotericsoftware.kryo.io.{Input, Output}
77
import com.google.cloud.hadoop.fs.gcs.{

spark/BUILD.bazel

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,27 @@ scala_library(
4949
],
5050
)
5151

52+
scala_library(
53+
name = "catalog_lib",
54+
srcs = glob(["src/main/scala/ai/chronon/spark/catalog/*.scala"]),
55+
format = select({
56+
"//tools/config:scala_2_13": False,
57+
"//conditions:default": True,
58+
}),
59+
visibility = ["//visibility:public"],
60+
deps = [
61+
":lib",
62+
"//api:lib",
63+
"//api:thrift_java",
64+
"//tools/build_rules/spark:spark-exec",
65+
maven_artifact("org.slf4j:slf4j-api"),
66+
maven_artifact("org.apache.thrift:libthrift"),
67+
maven_artifact("org.apache.logging.log4j:log4j-api"),
68+
maven_artifact("org.apache.logging.log4j:log4j-core"),
69+
maven_artifact_with_suffix("io.delta:delta-spark"),
70+
],
71+
)
72+
5273
scala_library(
5374
name = "submission_lib",
5475
srcs = glob(["src/main/scala/ai/chronon/spark/submission/*.scala"]),

spark/src/main/scala/ai/chronon/spark/Analyzer.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import org.apache.spark.sql.functions._
3333
import org.apache.spark.sql.{DataFrame, Row, types}
3434
import org.apache.spark.sql.types.{StringType, StructType}
3535
import org.slf4j.{Logger, LoggerFactory}
36+
import ai.chronon.spark.catalog.TableUtils
3637

3738
import scala.collection.{Seq, immutable, mutable}
3839
import scala.collection.mutable.ListBuffer

spark/src/main/scala/ai/chronon/spark/BootstrapInfo.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.apache.spark.sql.Row
2626
import org.apache.spark.sql.functions.expr
2727
import org.apache.spark.sql.types.{StringType, StructType}
2828
import org.slf4j.{Logger, LoggerFactory}
29+
import ai.chronon.spark.catalog.TableUtils
2930

3031
import scala.collection.{Seq, immutable, mutable}
3132
import scala.util.Try

spark/src/main/scala/ai/chronon/spark/Driver.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import ai.chronon.online.fetcher.{ConfPathOrName, FetchContext, FetcherMain, Met
2626
import ai.chronon.online.{Api, MetadataDirWalker, MetadataEndPoint, TopicChecker}
2727
import ai.chronon.orchestration.{JoinMergeNode, JoinPartNode}
2828
import ai.chronon.spark.batch._
29-
import ai.chronon.spark.format.Format
29+
import ai.chronon.spark.catalog.{Format, TableUtils}
3030
import ai.chronon.spark.stats.drift.{Summarizer, SummaryPacker, SummaryUploader}
3131
import ai.chronon.spark.stats.{CompareBaseJob, CompareJob, ConsistencyJob}
3232
import ai.chronon.spark.streaming.JoinSourceRunner

spark/src/main/scala/ai/chronon/spark/Extensions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import org.apache.spark.sql.functions._
2828
import org.apache.spark.sql.types.{LongType, StructType}
2929
import org.apache.spark.util.sketch.BloomFilter
3030
import org.slf4j.{Logger, LoggerFactory}
31+
import ai.chronon.spark.catalog.TableUtils
3132

3233
import java.util
3334
import scala.collection.Seq

spark/src/main/scala/ai/chronon/spark/GroupBy.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import ai.chronon.api.{
3131
TsUtils,
3232
TimeRange
3333
}
34+
import ai.chronon.spark.catalog.TableUtils
3435
import ai.chronon.api.DataModel.ENTITIES
3536
import ai.chronon.api.DataModel.EVENTS
3637
import ai.chronon.api.Extensions._

spark/src/main/scala/ai/chronon/spark/GroupByUpload.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import ai.chronon.aggregator.windowing.FiveMinuteResolution
2121
import ai.chronon.aggregator.windowing.Resolution
2222
import ai.chronon.aggregator.windowing.SawtoothOnlineAggregator
2323
import ai.chronon.api
24+
import ai.chronon.spark.catalog.TableUtils
2425
import ai.chronon.api.Accuracy
2526
import ai.chronon.api.Constants
2627
import ai.chronon.api.DataModel

spark/src/main/scala/ai/chronon/spark/Join.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import ai.chronon.api.DataModel.ENTITIES
2121
import ai.chronon.api.Extensions._
2222
import ai.chronon.api.ScalaJavaConversions._
2323
import ai.chronon.api._
24+
import ai.chronon.spark.catalog.TableUtils
2425
import ai.chronon.online.serde.SparkConversions
2526
import ai.chronon.orchestration.{JoinBootstrapNode, JoinPartNode}
2627
import ai.chronon.spark.Extensions._

spark/src/main/scala/ai/chronon/spark/JoinBase.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import ai.chronon.api
2020
import ai.chronon.api.DataModel.ENTITIES
2121
import ai.chronon.api.Extensions._
2222
import ai.chronon.api.ScalaJavaConversions._
23+
import ai.chronon.spark.catalog.TableUtils
2324
import ai.chronon.api.{Accuracy, Constants, DateRange, JoinPart, PartitionRange, PartitionSpec}
2425
import ai.chronon.online.metrics.Metrics
2526
import ai.chronon.orchestration.JoinBootstrapNode

spark/src/main/scala/ai/chronon/spark/JoinDerivationJob.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ai.chronon.spark
33
import ai.chronon.api.Extensions._
44
import ai.chronon.api.ScalaJavaConversions.ListOps
55
import ai.chronon.api.DateRange
6+
import ai.chronon.spark.catalog.TableUtils
67
import ai.chronon.orchestration.JoinDerivationNode
78
import ai.chronon.spark.Extensions._
89
import org.apache.spark.sql.functions.{coalesce, col, expr}

spark/src/main/scala/ai/chronon/spark/JoinUtils.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import ai.chronon.api.ScalaJavaConversions._
2323
import ai.chronon.api._
2424
import ai.chronon.spark.Extensions._
2525
import com.google.gson.Gson
26+
import ai.chronon.spark.catalog.TableUtils
2627
import org.apache.spark.sql
2728
import org.apache.spark.sql.DataFrame
2829
import org.apache.spark.sql.expressions.UserDefinedFunction

spark/src/main/scala/ai/chronon/spark/LabelJoin.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import ai.chronon.api.{Builders, Constants, JoinPart, PartitionSpec, TimeUnit, W
2121
import ai.chronon.api.DataModel.ENTITIES
2222
import ai.chronon.api.DataModel.EVENTS
2323
import ai.chronon.api.Extensions._
24+
import ai.chronon.spark.catalog.TableUtils
2425
import ai.chronon.api.PartitionRange
2526
import ai.chronon.online.metrics.Metrics
2627
import ai.chronon.spark.Extensions._

spark/src/main/scala/ai/chronon/spark/LocalTableExporter.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package ai.chronon.spark
1919
import com.google.common.io.Files
2020
import org.apache.commons.io.FileUtils
2121
import org.apache.spark.sql.SaveMode
22-
22+
import ai.chronon.spark.catalog.TableUtils
2323
import java.io.File
2424

2525
object LocalTableExporter {

spark/src/main/scala/ai/chronon/spark/LogFlattenerJob.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import ai.chronon.online._
2525
import ai.chronon.online.metrics._
2626
import ai.chronon.online.serde._
2727
import ai.chronon.spark.Extensions.{StructTypeOps, _}
28+
import ai.chronon.spark.catalog.TableUtils
2829
import org.apache.spark.rdd.RDD
2930
import org.apache.spark.sql.catalyst.expressions.GenericRow
3031
import org.apache.spark.sql.functions.col

spark/src/main/scala/ai/chronon/spark/MetadataExporter.scala

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,14 @@ package ai.chronon.spark
1818

1919
import ai.chronon.api
2020
import ai.chronon.api.ThriftJsonCodec
21+
import ai.chronon.spark.catalog.TableUtils
2122
import com.fasterxml.jackson.databind.ObjectMapper
2223
import com.fasterxml.jackson.module.scala.DefaultScalaModule
2324
import org.apache.commons.lang.exception.ExceptionUtils
24-
import org.slf4j.Logger
25-
import org.slf4j.LoggerFactory
25+
import org.slf4j.{Logger, LoggerFactory}
2626

27-
import java.io.BufferedWriter
28-
import java.io.File
29-
import java.io.FileWriter
30-
import java.nio.file.Files
31-
import java.nio.file.Paths
32-
import scala.collection.immutable.Map
27+
import java.io.{BufferedWriter, File, FileWriter}
28+
import java.nio.file.{Files, Paths}
3329

3430
object MetadataExporter {
3531
@transient lazy val logger: Logger = LoggerFactory.getLogger(getClass)

spark/src/main/scala/ai/chronon/spark/batch/BootstrapJob.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ import ai.chronon.online.serde.SparkConversions
77
import ai.chronon.orchestration.JoinBootstrapNode
88
import ai.chronon.spark.Extensions._
99
import ai.chronon.spark.JoinUtils.{coalescedJoin, set_add}
10-
import ai.chronon.spark.{BootstrapInfo, JoinUtils, TableUtils}
10+
import ai.chronon.spark.{BootstrapInfo, JoinUtils}
1111
import org.apache.spark.sql
1212
import org.apache.spark.sql.DataFrame
1313
import org.apache.spark.sql.functions.{coalesce, col, lit, typedLit}
1414
import org.slf4j.{Logger, LoggerFactory}
15+
import ai.chronon.spark.catalog.TableUtils
1516

1617
import scala.collection.Seq
1718

spark/src/main/scala/ai/chronon/spark/batch/JoinPartJob.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
package ai.chronon.spark.batch
22

3-
import ai.chronon.api
4-
import ai.chronon.api.{Accuracy, Constants, DateRange, JoinPart, PartitionRange, PartitionSpec}
5-
import ai.chronon.api.DataModel
63
import ai.chronon.api.DataModel.{ENTITIES, EVENTS}
74
import ai.chronon.api.Extensions.{DateRangeOps, DerivationOps, GroupByOps, JoinPartOps, MetadataOps}
85
import ai.chronon.api.PartitionRange.toTimeRange
96
import ai.chronon.api.{Accuracy, Builders, Constants, DateRange, JoinPart, PartitionRange}
107
import ai.chronon.online.metrics.Metrics
118
import ai.chronon.orchestration.JoinPartNode
129
import ai.chronon.spark.Extensions._
13-
import ai.chronon.spark.{GroupBy, JoinUtils, TableUtils}
10+
import ai.chronon.spark.catalog.TableUtils
11+
import ai.chronon.spark.{GroupBy, JoinUtils}
1412
import org.apache.spark.sql.DataFrame
1513
import org.apache.spark.sql.functions.{col, date_format}
1614
import org.apache.spark.util.sketch.BloomFilter

spark/src/main/scala/ai/chronon/spark/batch/LabelJoinV2.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import ai.chronon.api.PartitionRange.toTimeRange
66
import ai.chronon.api._
77
import ai.chronon.online.metrics.Metrics
88
import ai.chronon.online.serde.SparkConversions
9-
import ai.chronon.spark.Analyzer
109
import ai.chronon.spark.Extensions._
11-
import ai.chronon.spark.{GroupBy, JoinUtils, TableUtils}
10+
import ai.chronon.spark.GroupBy
11+
import ai.chronon.spark.catalog.TableUtils
1212
import org.apache.spark.sql.DataFrame
1313
import org.apache.spark.sql.functions.{col, lit}
1414
import org.apache.spark.sql.types.{DataType, StructType}

spark/src/main/scala/ai/chronon/spark/batch/MergeJob.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import ai.chronon.api.{Accuracy, Constants, DateRange, JoinPart, PartitionRange,
77
import ai.chronon.orchestration.JoinMergeNode
88
import ai.chronon.spark.Extensions._
99
import ai.chronon.spark.JoinUtils.coalescedJoin
10-
import ai.chronon.spark.{JoinUtils, TableUtils}
10+
import ai.chronon.spark.JoinUtils
11+
import ai.chronon.spark.catalog.TableUtils
1112
import org.apache.spark.sql.DataFrame
1213
import org.apache.spark.sql.functions.{col, date_add, date_format, to_date}
1314
import org.slf4j.{Logger, LoggerFactory}

spark/src/main/scala/ai/chronon/spark/batch/SourceJob.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import ai.chronon.api.ScalaJavaConversions.JListOps
66
import ai.chronon.orchestration.SourceWithFilterNode
77
import ai.chronon.spark.Extensions._
88
import ai.chronon.spark.JoinUtils.parseSkewKeys
9-
import ai.chronon.spark.TableUtils
9+
import ai.chronon.spark.catalog.TableUtils
1010

1111
import scala.collection.{Map, Seq}
1212
import scala.jdk.CollectionConverters._

spark/src/main/scala/ai/chronon/spark/batch/StagingQuery.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import ai.chronon.api.ScalaJavaConversions._
55
import ai.chronon.api.thrift.TBase
66
import ai.chronon.api.{EngineType, ParametricMacro, PartitionRange, ThriftJsonCodec}
77
import ai.chronon.spark.Extensions._
8-
import ai.chronon.spark.{SparkSessionBuilder, TableUtils}
8+
import ai.chronon.spark.SparkSessionBuilder
99
import org.rogach.scallop.{ScallopConf, ScallopOption}
1010
import org.slf4j.{Logger, LoggerFactory}
11+
import ai.chronon.spark.catalog.TableUtils
1112

1213
import scala.collection.mutable
1314
import scala.reflect.ClassTag

spark/src/main/scala/ai/chronon/spark/format/CreationUtils.scala renamed to spark/src/main/scala/ai/chronon/spark/catalog/CreationUtils.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ai.chronon.spark.format
1+
package ai.chronon.spark.catalog
22

33
import org.apache.spark.sql.types.StructType
44

spark/src/main/scala/ai/chronon/spark/format/DefaultFormatProvider.scala renamed to spark/src/main/scala/ai/chronon/spark/catalog/DefaultFormatProvider.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ai.chronon.spark.format
1+
package ai.chronon.spark.catalog
22

33
import org.apache.spark.sql.SparkSession
44
import org.slf4j.{Logger, LoggerFactory}

spark/src/main/scala/ai/chronon/spark/format/DeltaLake.scala renamed to spark/src/main/scala/ai/chronon/spark/catalog/DeltaLake.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ai.chronon.spark.format
1+
package ai.chronon.spark.catalog
22

33
import org.apache.spark.sql.SparkSession
44
import org.apache.spark.sql.delta.DeltaLog

spark/src/main/scala/ai/chronon/spark/format/Format.scala renamed to spark/src/main/scala/ai/chronon/spark/catalog/Format.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ai.chronon.spark.format
1+
package ai.chronon.spark.catalog
22

33
import org.apache.spark.sql.SparkSession
44
import org.slf4j.{Logger, LoggerFactory}

spark/src/main/scala/ai/chronon/spark/format/FormatProvider.scala renamed to spark/src/main/scala/ai/chronon/spark/catalog/FormatProvider.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ai.chronon.spark.format
1+
package ai.chronon.spark.catalog
22

33
import org.apache.spark.sql.SparkSession
44

spark/src/main/scala/ai/chronon/spark/format/Hive.scala renamed to spark/src/main/scala/ai/chronon/spark/catalog/Hive.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ai.chronon.spark.format
1+
package ai.chronon.spark.catalog
22

33
import org.apache.spark.sql.SparkSession
44

spark/src/main/scala/ai/chronon/spark/format/Iceberg.scala renamed to spark/src/main/scala/ai/chronon/spark/catalog/Iceberg.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package ai.chronon.spark.format
1+
package ai.chronon.spark.catalog
22

3-
import ai.chronon.spark.TableUtils
43
import org.apache.spark.sql.SparkSession
54
import org.apache.spark.sql.functions.{col, date_format}
65
import org.apache.spark.sql.types.StructType

spark/src/main/scala/ai/chronon/spark/TableUtils.scala renamed to spark/src/main/scala/ai/chronon/spark/catalog/TableUtils.scala

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,28 @@
1414
* limitations under the License.
1515
*/
1616

17-
package ai.chronon.spark
17+
package ai.chronon.spark.catalog
1818

1919
import ai.chronon.api.ColorPrinter.ColorString
2020
import ai.chronon.api.Extensions._
2121
import ai.chronon.api.ScalaJavaConversions._
2222
import ai.chronon.api.{Constants, PartitionRange, PartitionSpec, Query, QueryUtils, TsUtils}
2323
import ai.chronon.spark.Extensions._
24-
import ai.chronon.spark.format.CreationUtils.alterTablePropertiesSql
25-
import ai.chronon.spark.format.{CreationUtils, FormatProvider, Iceberg}
2624
import org.apache.hadoop.hive.metastore.api.AlreadyExistsException
27-
import org.apache.spark.sql.{AnalysisException, DataFrame, SaveMode, SparkSession}
2825
import org.apache.spark.sql.catalyst.analysis.TableAlreadyExistsException
2926
import org.apache.spark.sql.catalyst.plans.logical.{Filter, Project}
27+
import org.apache.spark.sql.catalyst.util.QuotingUtils
3028
import org.apache.spark.sql.functions._
3129
import org.apache.spark.sql.types._
30+
import org.apache.spark.sql.{AnalysisException, DataFrame, SaveMode, SparkSession}
3231
import org.apache.spark.storage.StorageLevel
3332
import org.slf4j.{Logger, LoggerFactory}
3433

3534
import java.io.{PrintWriter, StringWriter}
36-
import java.time.{Instant, ZoneId}
3735
import java.time.format.DateTimeFormatter
36+
import java.time.{Instant, ZoneId}
3837
import scala.collection.{Seq, mutable}
3938
import scala.util.{Failure, Success, Try}
40-
import org.apache.spark.sql.catalyst.util.QuotingUtils
4139

4240
/** Trait to track the table format in use by a Chronon dataset and some utility methods to help
4341
* retrieve metadata / configure it appropriately at creation time
@@ -274,7 +272,7 @@ class TableUtils(@transient val sparkSession: SparkSession) extends Serializable
274272

275273
// Run tableProperties
276274
Option(tableProperties).filter(_.nonEmpty).foreach { props =>
277-
sql(alterTablePropertiesSql(tableName, props))
275+
sql(CreationUtils.alterTablePropertiesSql(tableName, props))
278276
}
279277

280278
val finalizedDf = if (autoExpand) {
@@ -564,7 +562,7 @@ class TableUtils(@transient val sparkSession: SparkSession) extends Serializable
564562
sql(expandTableQueryOpt.get)
565563

566564
// set a flag in table props to indicate that this is a dynamic table
567-
sql(alterTablePropertiesSql(tableName, Map(Constants.ChrononDynamicTable -> true.toString)))
565+
sql(CreationUtils.alterTablePropertiesSql(tableName, Map(Constants.ChrononDynamicTable -> true.toString)))
568566
}
569567
}
570568

0 commit comments

Comments
 (0)