从另一个数据库导入 Spark 2 的对象的类型是什么?

What is the type of an object imported from another database into Spark 2?

我正在将两个表从 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" 和 "cities" 分别是 customers: Unit = () cities: Unit = ()

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

这个单元是什么,是 RDD、DataSet 还是?

这是因为你把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 然后你可以进一步处理。