module Spark.IO.Internal.OutputCommon(
SaveMode(..),
OutputBucket,
DynOutputBucket,
OutputPartition,
DynOutputPartition,
SavingDescription(..),
partition,
partition',
bucket,
bucket',
saveDefaults,
saveCol
) where
import Spark.Core.Try
import Spark.Core.Column
import Spark.Core.Dataset
import Spark.Core.Internal.ColumnStructures(UnknownReference, UntypedColumnData)
import Spark.Core.Internal.ColumnFunctions(dropColReference)
import Spark.Core.Internal.Utilities
import Spark.IO.Internal.InputGeneric
data SaveMode =
Overwrite
| Append
| Ignore
| ErrorIfExists deriving(Eq, Show)
data OutputPartition ref = OutputPartition UntypedColumnData
type DynOutputPartition = Try (OutputPartition UnknownReference)
data OutputBucket ref = OutputBucket UntypedColumnData
type DynOutputBucket = Try (OutputBucket UnknownReference)
partition :: Column ref a -> OutputPartition ref
partition = OutputPartition . dropColType . dropColReference
partition' :: DynColumn -> DynOutputPartition
partition' = fmap partition
bucket :: Column ref a -> OutputBucket ref
bucket = OutputBucket . dropColType . dropColReference
bucket' :: DynColumn -> DynOutputBucket
bucket' = fmap bucket
data SavingDescription ref a = SavingDescription {
partitions :: ![OutputPartition ref],
buckets :: ![OutputBucket ref],
savedCol :: !(Column ref a),
saveFormat :: !DataFormat,
savePath :: !SparkPath
}
saveDefaults :: SparkPath -> DataFormat -> Column ref a -> SavingDescription ref a
saveDefaults sp f c = SavingDescription {
partitions = [],
buckets = [],
savedCol = c,
saveFormat = f,
savePath = sp
}
saveCol :: SavingDescription ref a -> LocalData Bool
saveCol _ = missing "saveCol"