SparkSession 初始化错误 - 无法使用 spark.read



我试图创建一个独立的PySpark程序,该程序读取csv并将其存储在hive表中。我在配置 Spark 会话、会议和上下文对象时遇到问题。这是我的代码:

from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext, SparkSession
from pyspark.sql.types import *
conf = SparkConf().setAppName("test_import")
sc = SparkContext(conf=conf)
sqlContext  = SQLContext(sc)
spark = SparkSession.builder.config(conf=conf)
dfRaw = spark.read.csv("hdfs:/user/..../test.csv",header=False)
dfRaw.createOrReplaceTempView('tempTable')
sqlContext.sql("create table customer.temp as select * from tempTable")

我收到错误:

dfRaw = spark.read.csv("hdfs:/user/../test.csv",header=False) 属性错误:"生成器"对象没有属性"读取"

配置火花会话对象以使用read.csv命令的正确方法是什么?另外,有人可以解释会话,上下文和会议对象之间的差异吗?

不需要同时使用 SparkContextSparkSession 来初始化 Spark。 SparkSession是较新的推荐使用方式。

要初始化您的环境,只需执行以下操作:

spark = SparkSession
  .builder
  .appName("test_import")
  .getOrCreate()

您可以通过执行以下操作来运行 SQL 命令:

spark.sql(...)

在Spark 2.0.0之前,使用了三个独立的对象:SparkContextSQLContextHiveContext。这些是分开使用的,具体取决于您要执行的操作和使用的数据类型。

随着数据集/数据帧抽象的引入,SparkSession对象成为 Spark 环境的主要入口点。仍然可以通过首先初始化一个SparkSession(例如在名为 spark 的变量中)然后执行 spark.sparkContext/spark.sqlContext 来访问其他对象。

相关内容

  • 没有找到相关文章

最新更新