从另一个数据库导入 Spark 2 的对象的类型是啥? [复制]

Posted

技术标签:

【中文标题】从另一个数据库导入 Spark 2 的对象的类型是啥? [复制]【英文标题】:What is the type of an object imported from another database into Spark 2? [duplicate]从另一个数据库导入 Spark 2 的对象的类型是什么? [复制] 【发布时间】:2018-02-15 14:25:27 【问题描述】:

我将两个表从 oracle 导入 Spark,如下所示:

val customers = spark.read.format("jdbc").option("url", "jdbc:oracle:thin:user/password@//IP:2222/ebe").option("driver", "oracle.jdbc.OracleDriver").option("dbtable", "customers").load().show()

val cities = spark.read.format("jdbc").option("url", "jdbc:oracle:thin:user/password@//IP:2222/ebe").option("driver", "oracle.jdbc.OracleDriver").option("dbtable", "cities").load().show()

这些表应该稍后通过“ID”连接起来,如下所示:

val df = customers.join(cities, customers.col("ID") === cities.col("ID"))

问题是对象“客户”和“城市”的类型分别是customers: Unit = () cities: Unit = ()

这里有解释如何从 Seq() 转换为 DataFrame 的答案,但没有关于 Unit 到 DataFrame 的说明。

这个Unit是什么,是RDD、DataSet还是?

【问题讨论】:

【参考方案1】:

这是因为你把show() 放在最后。 show() 具有 Unit 类型,因此您的 customerscities 具有 Unit 类型。

你应该写:

val customers = spark.read.format("jdbc").option("url", "jdbc:oracle:thin:user/password@//IP:2222/ebe").option("driver", "oracle.jdbc.OracleDriver").option("dbtable", "customers").load()
val cities = spark.read.format("jdbc").option("url", "jdbc:oracle:thin:user/password@//IP:2222/ebe").option("driver", "oracle.jdbc.OracleDriver").option("dbtable", "cities").load()

那么它们应该是DataFrame 或一些Dataset,然后您可以进一步处理。

【讨论】:

以上是关于从另一个数据库导入 Spark 2 的对象的类型是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

反应 - 无法从另一个 js 文件导入对象

从另一个项目导入 .proto 文件

从另一个包和文件 golang 导入结构

从另一个文件导入变量?

是否可以从另一个调用 oracle 对象类型构造函数?

“无法找到存储在数据集中的类型的编码器”,即使 spark.implicits._ 被导入?