从另一个数据库导入 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
类型,因此您的 customers
和 cities
具有 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 的对象的类型是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章