在配置单元表中保存从oracle查询创建的sparkDataframe?

rkkpypqq  于 2021-06-27  发布在  Hive
关注(0)|答案(2)|浏览(288)

我在cloudera平台上通过色调使用 Impala /Hive。
如果我通过pyspark将一个表从配置单元拉到sparkDataframe中,我可以将它保存为一个不同的表,如下所示:

sdf.write.mode("overwrite").saveAsTable("schema.PythonTest")

然后,当我在hive/impala下的色调中刷新表时,我可以在那里看到新表并开始用它编写hql。
然而,当我将数据从oracle拉入sparkDataframe时,在尝试上述相同的语法时会出现错误。

sdf = spark.read \
.format("jdbc") \
.option("url", "jdbc:oracle:thin:UN/PW!@blah.bleh.com:port/sid") \
.option("dbtable", mySQL) \
.option("user", "UN") \
.option("password", "pw!") \
.option("driver", "oracle.jdbc.driver.OracleDriver") \
.load()

我无法解释。为什么当hive query将数据拉入sdf时语法会起作用,而当oracle将数据拉入sdf时语法不会起作用?
sql for oracle运行良好,出于测试目的,它只有2列2行。当我使用type(sdf)函数时,我可以清楚地看到我成功地创建了sparkDataframe。
我是否缺少一些设置或步骤?

2izufjch

2izufjch1#

从oracle中提取数据时出现了什么错误?格式也应该是jdbc吗?

hjzp0vay

hjzp0vay2#

如果这发生在你身上:
确保您没有停止和启动sparkcontext。如果是这样,您很可能没有包括默认设置中的必要选项,这将允许sparkDataframe通过saveastable保存到配置单元。
我重新启动了我的内核,跳过了我停下来启动一个新sparkcontext的单元,工作正常。

相关问题