ERROR with RDD.registerAsTable?



我正在尝试使用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寄存器,而它具有!我很困惑!谁能帮助我?

@philantrovert指出正确的功能是 registerTempTable

dataFrames具有registerTempTable属性(您可以将它们转换为Spark SQL),但RDD没有(这不是结构化表)。

只使用:

df.registerTempTable("transactions")

由于它已经被加载为数据框。

如果您想要数据库中的永久表,请使用.write.saveAsTable("transactions")

相关内容

  • 没有找到相关文章

最新更新