From 656090f3847cdee9baca504ab04fc8572c9ef33d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Tue, 21 May 2019 13:33:50 +0800 Subject: [PATCH] modify --- code/spark/spark-core/file/emp.json | 14 + .../src/main/java/rdd/scala/SparkSqlApp.scala | 65 ++++ .../main/java/rdd/scala/SparkSqlTest.scala | 57 --- .../java/rdd/scala/TransformationTest.scala | 2 +- notes/Spark-Transformation和Action.md | 2 +- notes/SparkSQL-API基本使用.md | 345 ++++++++++++++++++ pictures/spark-scheme.png | Bin 0 -> 13180 bytes pictures/spark-sql-shell.png | Bin 0 -> 50035 bytes pictures/spark-sql-自定义函数.png | Bin 0 -> 71360 bytes resources/dept.json | 4 + resources/emp.json | 14 + 11 files changed, 444 insertions(+), 59 deletions(-) create mode 100644 code/spark/spark-core/file/emp.json create mode 100644 code/spark/spark-core/src/main/java/rdd/scala/SparkSqlApp.scala delete mode 100644 code/spark/spark-core/src/main/java/rdd/scala/SparkSqlTest.scala create mode 100644 notes/SparkSQL-API基本使用.md create mode 100644 pictures/spark-scheme.png create mode 100644 pictures/spark-sql-shell.png create mode 100644 pictures/spark-sql-自定义函数.png create mode 100644 resources/dept.json create mode 100644 resources/emp.json diff --git a/code/spark/spark-core/file/emp.json b/code/spark/spark-core/file/emp.json new file mode 100644 index 0000000..03af1f5 --- /dev/null +++ b/code/spark/spark-core/file/emp.json @@ -0,0 +1,14 @@ +{"EMPNO": 7369,"ENAME": "SMITH","JOB": "CLERK","MGR": 7902,"HIREDATE": "1980-12-17 00:00:00","SAL": 800.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7499,"ENAME": "ALLEN","JOB": "SALESMAN","MGR": 7698,"HIREDATE": "1981-02-20 00:00:00","SAL": 1600.00,"COMM": 300.00,"DEPTNO": 30} +{"EMPNO": 7521,"ENAME": "WARD","JOB": "SALESMAN","MGR": 7698,"HIREDATE": "1981-02-22 00:00:00","SAL": 1250.00,"COMM": 500.00,"DEPTNO": 30} +{"EMPNO": 7566,"ENAME": "JONES","JOB": "MANAGER","MGR": 7839,"HIREDATE": "1981-04-02 00:00:00","SAL": 2975.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7654,"ENAME": "MARTIN","JOB": "SALESMAN","MGR": 7698,"HIREDATE": "1981-09-28 00:00:00","SAL": 1250.00,"COMM": 1400.00,"DEPTNO": 30} +{"EMPNO": 7698,"ENAME": "BLAKE","JOB": "MANAGER","MGR": 7839,"HIREDATE": "1981-05-01 00:00:00","SAL": 2850.00,"COMM": null,"DEPTNO": 30} +{"EMPNO": 7782,"ENAME": "CLARK","JOB": "MANAGER","MGR": 7839,"HIREDATE": "1981-06-09 00:00:00","SAL": 2450.00,"COMM": null,"DEPTNO": 10} +{"EMPNO": 7788,"ENAME": "SCOTT","JOB": "ANALYST","MGR": 7566,"HIREDATE": "1987-04-19 00:00:00","SAL": 1500.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7839,"ENAME": "KING","JOB": "PRESIDENT","MGR": null,"HIREDATE": "1981-11-17 00:00:00","SAL": 5000.00,"COMM": null,"DEPTNO": 10} +{"EMPNO": 7844,"ENAME": "TURNER","JOB": "SALESMAN","MGR": 7698,"HIREDATE": "1981-09-08 00:00:00","SAL": 1500.00,"COMM": 0.00,"DEPTNO": 30} +{"EMPNO": 7876,"ENAME": "ADAMS","JOB": "CLERK","MGR": 7788,"HIREDATE": "1987-05-23 00:00:00","SAL": 1100.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7900,"ENAME": "JAMES","JOB": "CLERK","MGR": 7698,"HIREDATE": "1981-12-03 00:00:00","SAL": 950.00,"COMM": null,"DEPTNO": 30} +{"EMPNO": 7902,"ENAME": "FORD","JOB": "ANALYST","MGR": 7566,"HIREDATE": "1981-12-03 00:00:00","SAL": 3000.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7934,"ENAME": "MILLER","JOB": "CLERK","MGR": 7782,"HIREDATE": "1982-01-23 00:00:00","SAL": 1300.00,"COMM": null,"DEPTNO": 10} \ No newline at end of file diff --git a/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlApp.scala b/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlApp.scala new file mode 100644 index 0000000..c70af1f --- /dev/null +++ b/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlApp.scala @@ -0,0 +1,65 @@ +package rdd.scala + +import org.apache.spark.sql.expressions.Aggregator +import org.apache.spark.sql.{Encoder, Encoders, SparkSession, functions} + +// 1.定义员工类,对于可能存在null值的字段需要使用Option进行包装 +case class Emp(ename: String, comm: scala.Option[Double], deptno: Long, empno: Long, + hiredate: String, job: String, mgr: scala.Option[Long], sal: Double) + +// 2.定义聚合操作的中间输出类型 +case class SumAndCount(var sum: Double, var count: Long) + +/* 3.自定义聚合函数 + * @IN 聚合操作的输入类型 + * @BUF reduction操作输出值的类型 + * @OUT 聚合操作的输出类型 + */ +object MyAverage extends Aggregator[Emp, SumAndCount, Double] { + + + // 4.用于聚合操作的的初始零值 + override def zero: SumAndCount = SumAndCount(0, 0) + + + // 5.同一分区中的reduce操作 + override def reduce(avg: SumAndCount, emp: Emp): SumAndCount = { + avg.sum += emp.sal + avg.count += 1 + avg + } + + // 6.不同分区中的merge操作 + override def merge(avg1: SumAndCount, avg2: SumAndCount): SumAndCount = { + avg1.sum += avg2.sum + avg1.count += avg2.count + avg1 + } + + // 7.定义最终的输出类型 + override def finish(reduction: SumAndCount): Double = reduction.sum / reduction.count + + // 8.中间类型的编码转换 + override def bufferEncoder: Encoder[SumAndCount] = Encoders.product + + // 9.输出类型的编码转换 + override def outputEncoder: Encoder[Double] = Encoders.scalaDouble +} + +object SparkSqlApp { + + // 测试方法 + def main(args: Array[String]): Unit = { + + val spark = SparkSession.builder().appName("Spark-SQL").master("local[2]").getOrCreate() + import spark.implicits._ + val ds = spark.read.json("file/emp.json").as[Emp] + + // 10.使用内置avg()函数和自定义函数分别进行计算,验证自定义函数是否正确 + val myAvg = ds.select(MyAverage.toColumn.name("average_sal")).first() + val avg = ds.select(functions.avg(ds.col("sal"))).first().get(0) + + println("自定义average函数 : " + myAvg) + println("内置的average函数 : " + avg) + } +} diff --git a/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlTest.scala b/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlTest.scala deleted file mode 100644 index 1907cf2..0000000 --- a/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlTest.scala +++ /dev/null @@ -1,57 +0,0 @@ -package rdd.scala - -import org.apache.spark.sql.{Dataset, SparkSession} - - -object SparkSqlTest extends App { - - - - val spark = SparkSession.builder().appName("Spark SQL basic example").config("spark.some.config.option", "some-value").getOrCreate() - - val dataFrames = spark.read.json("/usr/file/people.json") - - df.select("name").show() - - df.printSchema() - - - - - import spark.implicits._ - - val primitiveDS = Seq(1, 2, 3).toDS() - primitiveDS.printSchema() - primitiveDS.map(_ + 1).collect() - - peopleDS.select("name").show() //失败 - peopleDS.dtypes - peopleDS.printSchema() - peopleDS.toDF() - // Encoders are created for case classes - - /* 1.此时把selected写成为selected ,编译器没有任何提示 */ - spark.sql("selected name from emp") - - /* 2.此时把selected写成为selected ,编译器有提示; 但是把字段名称name写成了nameEd ,编译器没有任何提示*/ - val dataFrames = spark.read.json("people.json") - dataFrames.selected("nameEd").show() - dataFrames.map(line=>line.name) - - case class Person(name: String, age: Long) - - /* 3.此时最为严格,语法和字段名称错误都被检测出来*/ - val dataSet: Dataset[Person] = spark.read.json("people.json").as[Person] - dataSet.selected("name") - dataSet.map(line=>line.name) - dataSet.map(line=>line.nameEd) - - /* 4.即使在由RDD转换为dataFrame时候指定了类型Person,依然无法提示字段名称*/ - val peopleDF = spark.sparkContext - .textFile("people.json") - .map(_.split(",")) - .map(attributes => Person(attributes(0), attributes(1).trim.toInt)) - .toDF() - peopleDF.map(line=>line.name) - -} diff --git a/code/spark/spark-core/src/main/java/rdd/scala/TransformationTest.scala b/code/spark/spark-core/src/main/java/rdd/scala/TransformationTest.scala index 1229dae..1b3f03e 100644 --- a/code/spark/spark-core/src/main/java/rdd/scala/TransformationTest.scala +++ b/code/spark/spark-core/src/main/java/rdd/scala/TransformationTest.scala @@ -67,7 +67,7 @@ class TransformationTest { @Test def sample(): Unit = { val list = List(1, 2, 3, 4, 5, 6) - sc.parallelize(list).sample(withReplacement = false, 0.5).foreach(println) + sc.parallelize(list).sample(withReplacement = false, fraction = 0.5).foreach(println) } diff --git a/notes/Spark-Transformation和Action.md b/notes/Spark-Transformation和Action.md index 5ea245a..eb44935 100644 --- a/notes/Spark-Transformation和Action.md +++ b/notes/Spark-Transformation和Action.md @@ -144,7 +144,7 @@ sc.parallelize(list, 3).mapPartitionsWithIndex((index, iterator) => { ```scala val list = List(1, 2, 3, 4, 5, 6) -sc.parallelize(list).sample(withReplacement = false, 0.5).foreach(println) +sc.parallelize(list).sample(withReplacement = false, fraction = 0.5).foreach(println) ``` ### 1.7 union diff --git a/notes/SparkSQL-API基本使用.md b/notes/SparkSQL-API基本使用.md new file mode 100644 index 0000000..dbcd47b --- /dev/null +++ b/notes/SparkSQL-API基本使用.md @@ -0,0 +1,345 @@ +# SparkSQL API基本使用 + +## 一、创建DataFrames + +Spark中所有功能的入口点是`SparkSession`,可以使用`SparkSession.builder()`创建。创建后应用程序就可以从现有RDD,Hive表或Spark数据源创建DataFrame。如下所示: + +```scala +val spark = SparkSession.builder().appName("Spark-SQL").master("local[2]").getOrCreate() +val df = spark.read.json("/usr/file/emp.json") +df.show() + +// 建议在进行spark SQL编程前导入下面的隐式转换,因为DataFrames和dataSets中很多操作都依赖了隐式转换 +import spark.implicits._ +``` + +这里可以启动`spark-shell`进行测试,需要注意的是`spark-shell`启动后会自动创建一个名为`spark`的`SparkSession`,在命令行中可以直接引用即可: + +![spark-sql-shell](D:\BigData-Notes\pictures\spark-sql-shell.png) + +## 二、DataFrames基本操作 + +### 2.1 printSchema + +```scala +// 以树形结构打印dataframe的schema信息 +df.printSchema() +``` + +![spark-scheme](D:\BigData-Notes\pictures\spark-scheme.png) + +### 2.2 使用DataFrame API进行基本查询 + +```scala +// 查询员工姓名及工作 +df.select($"ename", $"job").show() + +// 查询工资大于2000的员工信息 +df.filter($"sal" > 2000).show() + +// 分组统计部门人数 +df.groupBy("deptno").count().show() +``` + +### 2.3 使用SQL进行基本查询 + +```scala +// 首先需要将DataFrame注册为临时视图 +df.createOrReplaceTempView("emp") + +// 查询员工姓名及工作 +spark.sql("SELECT ename,job FROM emp").show() + +// 查询工资大于2000的员工信息 +spark.sql("SELECT * FROM emp where sal > 2000").show() + +// 分组统计部门人数 +spark.sql("SELECT deptno,count(ename) FROM emp group by deptno").show() +``` + +### 2.4 全局临时视图 + +上面使用`createOrReplaceTempView`创建的是会话临时视图,它的生命周期仅限于会话范围,会随会话的结束而结束。 + +你也可以使用`createGlobalTempView`创建全局临时视图,全局临时视图可以在所有会话之间共享,并直到整个Spark应用程序终止才会消失。全局临时视图被定义在内置的`global_temp`数据库下,需要使用限定名称进行引用,如`SELECT * FROM global_temp.view1`。 + +```scala +// 注册为全局临时视图 +df.createGlobalTempView("gemp") + +// 查询员工姓名及工作,使用限定名称进行引用 +spark.sql("SELECT ename,job FROM global_temp.gemp").show() + +// 查询工资大于2000的员工信息,使用限定名称进行引用 +spark.sql("SELECT * FROM global_temp.gemp where sal > 2000").show() + +// 分组统计部门人数,使用限定名称进行引用 +spark.sql("SELECT deptno,count(ename) FROM global_temp.gemp group by deptno").show() +``` + +## 三、创建Datasets + +### 3.1 由外部数据集创建 + +```scala +// 1.需要导入隐式转换 +import spark.implicits._ + +// 2.创建case class,等价于Java Bean +case class Emp(ename: String, comm: Double, deptno: Long, empno: Long, + hiredate: String, job: String, mgr: Long, sal: Double) + +// 3.由外部数据集创建Datasets +val ds = spark.read.json("/usr/file/emp.json").as[Emp] +ds.show() +``` + +### 3.2 由内部数据集创建 + +```scala +// 1.需要导入隐式转换 +import spark.implicits._ + +// 2.创建case class,等价于Java Bean +case class Emp(ename: String, comm: Double, deptno: Long, empno: Long, + hiredate: String, job: String, mgr: Long, sal: Double) + +// 3.由内部数据集创建Datasets +val caseClassDS = Seq(Emp("ALLEN", 300.0, 30, 7499, "1981-02-20 00:00:00", "SALESMAN", 7698, 1600.0), + Emp("JONES", 300.0, 30, 7499, "1981-02-20 00:00:00", "SALESMAN", 7698, 1600.0)) + .toDS() +caseClassDS.show() +``` + + + +## 四、DataFrames与Datasets互相转换 + +Spark提供了非常简单的转换方法用于DataFrames与Datasets互相转换,示例如下: + +```shell +# DataFrames转Datasets +scala> df.as[Emp] +res1: org.apache.spark.sql.Dataset[Emp] = [COMM: double, DEPTNO: bigint ... 6 more fields] + +# Datasets转DataFrames +scala> ds.toDF() +res2: org.apache.spark.sql.DataFrame = [COMM: double, DEPTNO: bigint ... 6 more fields] +``` + + + +## 五、RDDs转换为DataFrames\Datasets + +Spark支持两种方式把RDD转换为DataFrames,分别是使用反射推断和指定schema转换。 + +### 5.1 使用反射推断 + +```scala +// 1.导入隐式转换 +import spark.implicits._ + +// 2.创建部门类 +case class Dept(deptno: Long, dname: String, loc: String) + +// 3.创建RDD并转换为dataSet +val rddToDS = spark.sparkContext + .textFile("/usr/file/dept.txt") + .map(_.split("\t")) + .map(line => Dept(line(0).trim.toLong, line(1), line(2))) + .toDS() // 如果调用toDF()则转换为dataFrame +``` + +### 5.2 以编程方式指定Schema + +```scala +import org.apache.spark.sql.Row +import org.apache.spark.sql.types._ + + +// 1.定义每个列的列类型 +val fields = Array(StructField("deptno", LongType, nullable = true), + StructField("dname", StringType, nullable = true), + StructField("loc", StringType, nullable = true)) + +// 2.创建schema +val schema = StructType(fields) + +// 3.创建RDD +val deptRDD = spark.sparkContext.textFile("/usr/file/dept.txt") +val rowRDD = deptRDD.map(_.split("\t")).map(line => Row(line(0).toLong, line(1), line(2))) + + +// 4.将RDD转换为dataFrame +val deptDF = spark.createDataFrame(rowRDD, schema) +deptDF.show() +``` + +## 六、使用自定义聚合函数 + +Scala提供了两种自定义聚合函数的方法,分别如下: + ++ 有类型的自定义聚合函数,主要适用于DataSets; ++ 无类型的自定义聚合函数,主要适用于DataFrames。 + +以下分别使用两种方式来自定义一个求平均值的聚合函数,这里以计算员工平均工资为例。两种自定义方式分别如下: + +### 6.1 有类型的自定义函数 + +```scala +import org.apache.spark.sql.expressions.Aggregator +import org.apache.spark.sql.{Encoder, Encoders, SparkSession, functions} + +// 1.定义员工类,对于可能存在null值的字段需要使用Option进行包装 +case class Emp(ename: String, comm: scala.Option[Double], deptno: Long, empno: Long, + hiredate: String, job: String, mgr: scala.Option[Long], sal: Double) + +// 2.定义聚合操作的中间输出类型 +case class SumAndCount(var sum: Double, var count: Long) + +/* 3.自定义聚合函数 + * @IN 聚合操作的输入类型 + * @BUF reduction操作输出值的类型 + * @OUT 聚合操作的输出类型 + */ +object MyAverage extends Aggregator[Emp, SumAndCount, Double] { + + // 4.用于聚合操作的的初始零值 + override def zero: SumAndCount = SumAndCount(0, 0) + + // 5.同一分区中的reduce操作 + override def reduce(avg: SumAndCount, emp: Emp): SumAndCount = { + avg.sum += emp.sal + avg.count += 1 + avg + } + + // 6.不同分区中的merge操作 + override def merge(avg1: SumAndCount, avg2: SumAndCount): SumAndCount = { + avg1.sum += avg2.sum + avg1.count += avg2.count + avg1 + } + + // 7.定义最终的输出类型 + override def finish(reduction: SumAndCount): Double = reduction.sum / reduction.count + + // 8.中间类型的编码转换 + override def bufferEncoder: Encoder[SumAndCount] = Encoders.product + + // 9.输出类型的编码转换 + override def outputEncoder: Encoder[Double] = Encoders.scalaDouble +} + +object SparkSqlApp { + + // 测试方法 + def main(args: Array[String]): Unit = { + + val spark = SparkSession.builder().appName("Spark-SQL").master("local[2]").getOrCreate() + import spark.implicits._ + val ds = spark.read.json("file/emp.json").as[Emp] + + // 10.使用内置avg()函数和自定义函数分别进行计算,验证自定义函数是否正确 + val myAvg = ds.select(MyAverage.toColumn.name("average_sal")).first() + val avg = ds.select(functions.avg(ds.col("sal"))).first().get(0) + + println("自定义average函数 : " + myAvg) + println("内置的average函数 : " + avg) + } +} +``` + +自定义聚合函数需要实现的方法比较多,这里以绘图的方式来演示其执行流程,以及每个方法的作用: + +![spark-sql-自定义函数](D:\BigData-Notes\pictures\spark-sql-自定义函数.png) + + + +关于`zero`,`reduce`,`merge`,`finish`方法的作用在上图都有说明,这里解释一下中间类型和输出类型的编码转换,这个写法比较固定,基本上就是两种情况: + ++ 自定义类型case class或者元组就使用`Encoders.product`方法; ++ 基本类型就使用其对应名称的方法,如`scalaByte `,`scalaFloat`,`scalaShort`等。 + +```scala +override def bufferEncoder: Encoder[SumAndCount] = Encoders.product +override def outputEncoder: Encoder[Double] = Encoders.scalaDouble +``` + + + +### 6.2 无类型的自定义聚合函数 + +理解了有类型的自定义聚合函数后,无类型的定义方式也基本相同,代码如下: + +```scala +import org.apache.spark.sql.expressions.{MutableAggregationBuffer, UserDefinedAggregateFunction} +import org.apache.spark.sql.types._ +import org.apache.spark.sql.{Row, SparkSession} + +object MyAverage extends UserDefinedAggregateFunction { + // 1.聚合操作输入参数的类型,字段名称可以自定义 + def inputSchema: StructType = StructType(StructField("MyInputColumn", LongType) :: Nil) + + // 2.聚合操作中间值的类型,字段名称可以自定义 + def bufferSchema: StructType = { + StructType(StructField("sum", LongType) :: StructField("MyCount", LongType) :: Nil) + } + + // 3.聚合操作输出参数的类型 + def dataType: DataType = DoubleType + + // 4.此函数是否始终在相同输入上返回相同的输出,通常为true + def deterministic: Boolean = true + + // 5.定义零值 + def initialize(buffer: MutableAggregationBuffer): Unit = { + buffer(0) = 0L + buffer(1) = 0L + } + + // 6.同一分区中的reduce操作 + def update(buffer: MutableAggregationBuffer, input: Row): Unit = { + if (!input.isNullAt(0)) { + buffer(0) = buffer.getLong(0) + input.getLong(0) + buffer(1) = buffer.getLong(1) + 1 + } + } + + // 7.不同分区中的merge操作 + def merge(buffer1: MutableAggregationBuffer, buffer2: Row): Unit = { + buffer1(0) = buffer1.getLong(0) + buffer2.getLong(0) + buffer1(1) = buffer1.getLong(1) + buffer2.getLong(1) + } + + // 8.计算最终的输出值 + def evaluate(buffer: Row): Double = buffer.getLong(0).toDouble / buffer.getLong(1) +} + +object SparkSqlApp { + + // 测试方法 + def main(args: Array[String]): Unit = { + + val spark = SparkSession.builder().appName("Spark-SQL").master("local[2]").getOrCreate() + // 9.注册自定义的聚合函数 + spark.udf.register("myAverage", MyAverage) + + val df = spark.read.json("file/emp.json") + df.createOrReplaceTempView("emp") + + // 10.使用自定义函数和内置函数分别进行计算 + val myAvg = spark.sql("SELECT myAverage(sal) as avg_sal FROM emp").first() + val avg = spark.sql("SELECT avg(sal) as avg_sal FROM emp").first() + + println("自定义average函数 : " + myAvg) + println("内置的average函数 : " + avg) + } +} +``` + + + +## 参考资料 + +[Spark SQL, DataFrames and Datasets Guide > Getting Started](https://spark.apache.org/docs/latest/sql-getting-started.html) \ No newline at end of file diff --git a/pictures/spark-scheme.png b/pictures/spark-scheme.png new file mode 100644 index 0000000000000000000000000000000000000000..a4b8dbddf0548bdfde279e0d8fb8ead2a0689c85 GIT binary patch literal 13180 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 XU0tU{$pL(F1|%n?C|M+K;QxOB)&>pM literal 0 HcmV?d00001 diff --git a/pictures/spark-sql-shell.png b/pictures/spark-sql-shell.png new file mode 100644 index 0000000000000000000000000000000000000000..dc31c06fb42ba5ae448cff066eea9dfeba17c654 GIT binary patch literal 50035 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

i^td)|PPjus`~yH@8xE#BJnW*?MhtE^6BE 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 literal 0 HcmV?d00001 diff --git a/pictures/spark-sql-自定义函数.png b/pictures/spark-sql-自定义函数.png new file mode 100644 index 0000000000000000000000000000000000000000..abb1775116b678d7f2706bdfd0f979a900c7ea50 GIT binary patch literal 71360 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 literal 0 HcmV?d00001 diff --git a/resources/dept.json b/resources/dept.json new file mode 100644 index 0000000..7a50976 --- /dev/null +++ b/resources/dept.json @@ -0,0 +1,4 @@ +{"DEPTNO": 10,"DNAME": "ACCOUNTING","LOC": "NEW YORK"} +{"DEPTNO": 20,"DNAME": "RESEARCH","LOC": "DALLAS"} +{"DEPTNO": 30,"DNAME": "SALES","LOC": "CHICAGO"} +{"DEPTNO": 40,"DNAME": "OPERATIONS","LOC": "BOSTON"} \ No newline at end of file diff --git a/resources/emp.json b/resources/emp.json new file mode 100644 index 0000000..03af1f5 --- /dev/null +++ b/resources/emp.json @@ -0,0 +1,14 @@ +{"EMPNO": 7369,"ENAME": "SMITH","JOB": "CLERK","MGR": 7902,"HIREDATE": "1980-12-17 00:00:00","SAL": 800.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7499,"ENAME": "ALLEN","JOB": "SALESMAN","MGR": 7698,"HIREDATE": "1981-02-20 00:00:00","SAL": 1600.00,"COMM": 300.00,"DEPTNO": 30} +{"EMPNO": 7521,"ENAME": "WARD","JOB": "SALESMAN","MGR": 7698,"HIREDATE": "1981-02-22 00:00:00","SAL": 1250.00,"COMM": 500.00,"DEPTNO": 30} +{"EMPNO": 7566,"ENAME": "JONES","JOB": "MANAGER","MGR": 7839,"HIREDATE": "1981-04-02 00:00:00","SAL": 2975.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7654,"ENAME": "MARTIN","JOB": "SALESMAN","MGR": 7698,"HIREDATE": "1981-09-28 00:00:00","SAL": 1250.00,"COMM": 1400.00,"DEPTNO": 30} +{"EMPNO": 7698,"ENAME": "BLAKE","JOB": "MANAGER","MGR": 7839,"HIREDATE": "1981-05-01 00:00:00","SAL": 2850.00,"COMM": null,"DEPTNO": 30} +{"EMPNO": 7782,"ENAME": "CLARK","JOB": "MANAGER","MGR": 7839,"HIREDATE": "1981-06-09 00:00:00","SAL": 2450.00,"COMM": null,"DEPTNO": 10} +{"EMPNO": 7788,"ENAME": "SCOTT","JOB": "ANALYST","MGR": 7566,"HIREDATE": "1987-04-19 00:00:00","SAL": 1500.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7839,"ENAME": "KING","JOB": "PRESIDENT","MGR": null,"HIREDATE": "1981-11-17 00:00:00","SAL": 5000.00,"COMM": null,"DEPTNO": 10} +{"EMPNO": 7844,"ENAME": "TURNER","JOB": "SALESMAN","MGR": 7698,"HIREDATE": "1981-09-08 00:00:00","SAL": 1500.00,"COMM": 0.00,"DEPTNO": 30} +{"EMPNO": 7876,"ENAME": "ADAMS","JOB": "CLERK","MGR": 7788,"HIREDATE": "1987-05-23 00:00:00","SAL": 1100.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7900,"ENAME": "JAMES","JOB": "CLERK","MGR": 7698,"HIREDATE": "1981-12-03 00:00:00","SAL": 950.00,"COMM": null,"DEPTNO": 30} +{"EMPNO": 7902,"ENAME": "FORD","JOB": "ANALYST","MGR": 7566,"HIREDATE": "1981-12-03 00:00:00","SAL": 3000.00,"COMM": null,"DEPTNO": 20} +{"EMPNO": 7934,"ENAME": "MILLER","JOB": "CLERK","MGR": 7782,"HIREDATE": "1982-01-23 00:00:00","SAL": 1300.00,"COMM": null,"DEPTNO": 10} \ No newline at end of file