Apache spark RDD.registerAsTable出错?
我正在尝试使用pyspark运行sql查询。我正在使用以下代码: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
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