packages feed

sparkle-0.7.3: src/Control/Distributed/Spark/SQL/SparkSession.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE UndecidableInstances #-}

{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# OPTIONS_GHC -fplugin=Language.Java.Inline.Plugin #-}

module Control.Distributed.Spark.SQL.SparkSession where

import Control.Distributed.Spark.Context
import Language.Java
import Language.Java.Inline (java)

newtype SparkSession =
    SparkSession (J ('Class "org.apache.spark.sql.SparkSession"))
  deriving Coercible

newtype Builder =
    Builder (J ('Class "org.apache.spark.sql.SparkSession$Builder"))
  deriving Coercible

builder :: IO Builder
builder = [java| org.apache.spark.sql.SparkSession.builder() |]

config :: Builder -> SparkConf -> IO Builder
config b sc = [java| $b.config($sc) |]

sparkContext :: SparkSession -> IO SparkContext
sparkContext ss =
    [java| new org.apache.spark.api.java.JavaSparkContext($ss.sparkContext()) |]

getOrCreate :: Builder -> IO SparkSession
getOrCreate b = [java| $b.getOrCreate() |]