Skip to content

Commit 540ede8

Browse files
authored
Merge pull request #43 from VirtusLab/repl-utils
Some utils for REPL
2 parents 73b0ed0 + e877e2f commit 540ede8

3 files changed

Lines changed: 76 additions & 47 deletions

File tree

src/main/DataFrame.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.virtuslab.iskra
22

33
import org.apache.spark.sql
44
import org.apache.spark.sql.SparkSession
5+
import org.virtuslab.iskra.types.Encoder
56

67

78
trait DataFrame:
@@ -16,6 +17,11 @@ object DataFrame:
1617
export Where.dataFrameWhereOps
1718
export WithColumns.dataFrameWithColumnsOps
1819

20+
21+
// Has to be inline - otherwise for an unknown reason the runtime and compile-time schemas don't match
22+
inline def apply[A](elements: A*)(using encoder: Encoder[A])(using spark: SparkSession): ClassDataFrame[A] =
23+
DataFrameBuilders.toDF(elements)
24+
1925
given dataFrameOps: {} with
2026
extension (df: DataFrame)
2127
inline def show(): Unit = df.untyped.show()

src/main/api/api.scala

Lines changed: 48 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,52 @@
11
package org.virtuslab.iskra
2-
package api
32

4-
export DataFrameBuilders.toDF
5-
export types.{
6-
boolean,
7-
boolean_?,
8-
BooleanNotNull,
9-
BooleanOrNull,
10-
string,
11-
string_?,
12-
StringNotNull,
13-
StringOrNull,
14-
byte,
15-
byte_?,
16-
ByteNotNull,
17-
ByteOrNull,
18-
short,
19-
short_?,
20-
ShortNotNull,
21-
ShortOrNull,
22-
int,
23-
int_?,
24-
IntNotNull,
25-
IntOrNull,
26-
long,
27-
long_?,
28-
LongNotNull,
29-
LongOrNull,
30-
float,
31-
float_?,
32-
FloatNotNull,
33-
FloatOrNull,
34-
double,
35-
double_?,
36-
DoubleNotNull,
37-
DoubleOrNull,
38-
struct,
39-
struct_?,
40-
StructNotNull,
41-
StructOrNull
42-
}
43-
export UntypedOps.typed
44-
export org.virtuslab.iskra.$
45-
export org.virtuslab.iskra.{Column, Columns, Col, DataFrame, ClassDataFrame, NamedColumns, StructDataFrame, UntypedColumn, UntypedDataFrame, :=, /}
3+
object api:
464

47-
object functions:
48-
export org.virtuslab.iskra.functions.{lit, when}
49-
export org.virtuslab.iskra.functions.Aggregates.*
5+
export DataFrameBuilders.toDF
6+
export types.{
7+
boolean,
8+
boolean_?,
9+
BooleanNotNull,
10+
BooleanOrNull,
11+
string,
12+
string_?,
13+
StringNotNull,
14+
StringOrNull,
15+
byte,
16+
byte_?,
17+
ByteNotNull,
18+
ByteOrNull,
19+
short,
20+
short_?,
21+
ShortNotNull,
22+
ShortOrNull,
23+
int,
24+
int_?,
25+
IntNotNull,
26+
IntOrNull,
27+
long,
28+
long_?,
29+
LongNotNull,
30+
LongOrNull,
31+
float,
32+
float_?,
33+
FloatNotNull,
34+
FloatOrNull,
35+
double,
36+
double_?,
37+
DoubleNotNull,
38+
DoubleOrNull,
39+
struct,
40+
struct_?,
41+
StructNotNull,
42+
StructOrNull
43+
}
44+
export UntypedOps.typed
45+
export org.virtuslab.iskra.$
46+
export org.virtuslab.iskra.{Column, Columns, Col, DataFrame, ClassDataFrame, NamedColumns, StructDataFrame, UntypedColumn, UntypedDataFrame, :=, /}
5047

51-
export org.apache.spark.sql.SparkSession
48+
object functions:
49+
export org.virtuslab.iskra.functions.{lit, when}
50+
export org.virtuslab.iskra.functions.Aggregates.*
51+
52+
export org.apache.spark.sql.SparkSession

src/main/repl/repl.scala

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
Suggested usage in your REPL:
3+
4+
import org.virtuslab.iskra.repl.*
5+
6+
Then you can simply create a data frame like
7+
8+
val df = DF(1, 2, 3)
9+
10+
*/
11+
12+
package org.virtuslab.iskra.repl
13+
14+
import org.apache.spark.sql.SparkSession
15+
16+
// Not using `given` to make it accessible with a * wildcard import
17+
implicit lazy val spark: SparkSession =
18+
SparkSession.builder().master("local").getOrCreate()
19+
20+
export org.virtuslab.iskra.api.*
21+
22+
export org.virtuslab.iskra.api.DataFrame as DF

0 commit comments

Comments
 (0)