Dataframe 在配置单元表中保存从oracle查询创建的Spark数据帧?

Dataframe 在配置单元表中保存从oracle查询创建的Spark数据帧?,dataframe,hive,pyspark,Dataframe,Hive,Pyspark,我在Cloudera平台上通过色调使用黑斑羚/蜂巢 如果我通过Pyspark将一个表从hive拉入Spark数据框,我可以将它另存为一个表,如下所示: sdf.write.mode("overwrite").saveAsTable("schema.PythonTest") 然后,当我在hive/impala下以色调刷新我的表时,我可以在那里看到新表,并开始用它编写HQL 然而,当我将数据从oracle拉入Spark数据框时,在尝试与上面相同的语法时会出现错误 sdf = spark.read

我在Cloudera平台上通过色调使用黑斑羚/蜂巢

如果我通过Pyspark将一个表从hive拉入Spark数据框,我可以将它另存为一个表,如下所示:

sdf.write.mode("overwrite").saveAsTable("schema.PythonTest")
然后,当我在hive/impala下以色调刷新我的表时,我可以在那里看到新表,并开始用它编写HQL

然而,当我将数据从oracle拉入Spark数据框时,在尝试与上面相同的语法时会出现错误

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()
我无法解释。为什么当配置单元查询将数据拉入sdf时语法会起作用,而当oracle拉入sdf时却不起作用

sql for oracle运行良好,出于测试目的,它只有2列2行。当我使用type(sdf)函数时,我可以清楚地看到我正在成功地创建Spark数据帧


我是否缺少一些设置或步骤?

从Oracle中提取数据时出现了什么错误?
格式是否也应为jdbc?

如果您遇到这种情况:

确保您没有停止和启动SparkContext。如果是这样,您很可能没有包括默认设置中的必要选项,这将允许Spark DataFrame通过saveAsTable保存到配置单元


我重新启动了内核,跳过了正在停止和启动新SparkContext的单元格,工作正常。

我从oracle提取数据时没有出错,而是在尝试将从oracle提取的spark数据帧保存到配置单元时出错。我会找到一些东西来帮助我在公共场合重新创建它。我想我需要将配置单元上下文添加到数据帧中,但我不确定如何做。当您提取数据时,会出现什么错误?要回答这个问题,为什么当配置单元查询将数据拉入sdf时语法会起作用,而当oracle拉入sdf时语法不会起作用,您应该在编写时提供错误。对于HiveContext,请从pyspark.sql导入HiveContext HiveContext=HiveContext(sc)。