我尝试创建一个独立的PySpark程序,它读取csv并将其存储在hive表中 . 我在配置Spark会话, 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'对象没有属性'read'
为了使用read.csv命令,哪种配置spark会话对象的正确方法?另外,有人可以解释Session,Context和Conderence对象之间的差异吗?
1 回答
无需使用
SparkContext
和SparkSession
来初始化Spark .SparkSession
是较新的,推荐使用的方式 .要初始化您的环境,只需执行以下操作:
您可以执行以下操作来运行SQL命令:
在Spark 2.0.0之前,使用了三个单独的对象:
SparkContext
,SQLContext
和HiveContext
. 这些是分开使用的,具体取决于您想要做什么以及使用的数据类型 .随着数据集/ DataFrame抽象的介绍,
SparkSession
对象成为Spark环境的主要入口点 . 通过首先初始化SparkSession
(例如在名为spark
的变量中)然后执行spark.sparkContext
/spark.sqlContext
,仍然可以访问其他对象 .