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

Mic*_*l N 9 python apache-spark apache-spark-sql pyspark apache-spark-2.0

我尝试创建一个独立的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")
Run Code Online (Sandbox Code Playgroud)

我收到错误:

dfRaw = spark.read.csv("hdfs:/ user /../ test.csv",header = False)AttributeError:'Builder'对象没有属性'read'

为了使用read.csv命令,哪种配置spark会话对象的正确方法?另外,有人可以解释Session,Context和Conderence对象之间的差异吗?

Sha*_*ica 9

没有必要同时使用SparkContextSparkSession初始化Spark.SparkSession是较新的,推荐使用的方式.

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

spark = SparkSession\
  .builder\
  .appName("test_import")\
  .getOrCreate()
Run Code Online (Sandbox Code Playgroud)

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

spark.sql(...)
Run Code Online (Sandbox Code Playgroud)

此前星火使用了2.0.0,三个独立的对象:SparkContext,SQLContextHiveContext.这些是分开使用的,具体取决于您想要做什么以及使用的数据类型.

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