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

标签 python apache-spark pyspark apache-spark-sql apache-spark-2.0

我尝试创建一个独立的 PySpark 程序来读取 csv 并将其存储在配置单元表中。我在配置 Spark session 、 session 和上下文对象时遇到问题。这是我的代码:

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) AttributeError: 'Builder' object has no attribute 'read'

为了使用 read.csv 命令,配置 spark session 对象的正确方法是什么?另外,有人可以解释一下 Session、Context 和 Conference 对象之间的区别吗?

最佳答案

无需同时使用 SparkContextSparkSession初始化星火。 SparkSession是较新的推荐使用方式。

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

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

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

spark.sql(...)

在 Spark 2.0.0 之前,使用了三个单独的对象:SparkContext , SQLContextHiveContext .根据您要执行的操作和使用的数据类型,分别使用它们。

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

关于python - SparkSession 初始化错误 - 无法使用 spark.read,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46905903/

相关文章:

python - 高斯混合模型 : Difference between Spark MLlib and scikit-learn

python - 加入 3 个数据框时遇到问题 - pyspark

python - 使用 Selenium 和 Python 搜索谷歌

python - 这个 List Overlap 程序给出了奇怪的输出

python - 为什么 ArgumentParser 返回命名空间而不是字典?

apache-spark - 如何从 PySpark 中的数据帧获取架构定义?

apache-spark - 需要像 "def groupByKeyWithRDD(partitioner: Partitioner): RDD[(K, RDD[V])] = ???"这样的东西

apache-spark - 在 spark-submit 命令行上设置 hadoop 配置值

pyspark 程序抛出名称 'spark' 未定义

python - 使用 PIL/Image 保存 .tif 堆栈