Apache spark RDD.registerAsTable出错?

Apache spark RDD.registerAsTable出错?,apache-spark,dataframe,pyspark,apache-spark-sql,rdd,Apache Spark,Dataframe,Pyspark,Apache Spark Sql,Rdd,我正在尝试使用pyspark运行sql查询。我正在使用以下代码: from pyspark import SparkConf, SparkContext from pyspark.sql import SQLContext, Row import os spark_config = SparkConf().setMaster("local").setAppName("Project_SQL") sc = SparkContext(conf = spark_config) sqlctx = SQ

我正在尝试使用pyspark运行sql查询。我正在使用以下代码:

from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext, Row
import os

spark_config = SparkConf().setMaster("local").setAppName("Project_SQL")
sc = SparkContext(conf = spark_config)
sqlctx = SQLContext(sc)

df = sqlctx.read.format("jdbc").option(url="..."
                                   , driver = "oracle.jdbc.driver.OracleDriver"
                                   , dbtable = "UDM_CDS.TRANSACTIONS"
                                   , user="..."
                                   , password="...").load()


df_rdd = df.rdd
df_rdd.registerAsTable("transactions")
sqlctx.sql('SELECT TRANSACTION_KEY FROM transactions').show(5)
但它一直说RDD对象没有atributte RegisterTable,而它有!我糊涂了!
有人能帮我吗?

正如@philantrovert指出的那样,正确的函数是
RegisterEmptable

数据帧有一个
registerTempTable
属性(您可以将它们转换为spark sql),但RDD没有(它不是结构化表)。

只需使用:

df.registerTempTable("transactions")
因为它已经作为数据帧加载


如果您想在数据库中创建一个永久表,请使用
.write.saveAsTable(“事务”)

正如@Philantrover指出的那样,正确的函数是
RegisterEmptable

数据帧有一个
registerTempTable
属性(您可以将它们转换为spark sql),但RDD没有(它不是结构化表)。

只需使用:

df.registerTempTable("transactions")
因为它已经作为数据帧加载


如果您希望在数据库中有一个永久表,请使用
.write.saveAsTable(“事务”)

*
registerEmptable
起初我这样做了,但仍然有相同的错误,即DataFrame对象没有属性registerTable!您还可以提到,在较新的版本中,
registerEmptable
已标记为不推荐使用。另一种选择是
createOrReplaceTempView
*
registerTempTable
起初我是这样做的,但仍然有相同的错误,说DataFrame对象没有属性registerAsTable!您还可以提到,在较新的版本中,
registerEmptable
已标记为不推荐使用。备选方案是
createOrReplaceTempView