问题 如何使用pyspark在Spark 2.0中构建sparkSession?


我刚刚访问spark 2.0;到目前为止,我一直在使用spark 1.6.1。有人可以帮我用pyspark(python)设置sparkSession吗?我知道在线提供的scala示例类似(这里),但我希望能直接用python语言进行演练。

我的具体情况:我在一个zeppelin spark笔记本中加载来自S3的avro文件。然后构建df并运行各种pyspark和sql查询。我所有的旧查询都使用sqlContext。我知道这是不好的做法,但我开始使用我的笔记本

sqlContext = SparkSession.builder.enableHiveSupport().getOrCreate()

我可以在avros中阅读

mydata = sqlContext.read.format("com.databricks.spark.avro").load("s3:... 

并构建没有问题的数据帧。但是一旦我开始查询dataframes / temp表,我就会一直收到“java.lang.NullPointerException”错误。我认为这表明存在转换错误(例如,旧查询在1.6.1中工作但需要针对2.0进行调整)。无论查询类型如何,都会发生错误。所以我假设

1.)sqlContext别名是个坏主意

2.)我需要正确设置sparkSession。

因此,如果有人能告诉我这是如何完成的,或者可能解释他们知道不同版本的spark之间的差异,我将非常感激。如果我需要详细说明这个问题,请告诉我。如果它令人费解,我道歉。


5632
2017-09-29 22:09


起源



答案:


从这里 http://spark.apache.org/docs/2.0.0/api/python/pyspark.sql.html
您可以使用以下方法创建一个spark会话:

>>> from pyspark.conf import SparkConf
>>> SparkSession.builder.config(conf=SparkConf())

6
2017-08-28 13:03





正如您在scala示例中看到的,Spark Session是sql模块的一部分。类似于python。因此,请参阅 pyspark sql模块文档

class pyspark.sql.SparkSession(sparkContext,jsparkSession = None)   使用Dataset和DataFrame API编程Spark的切入点。一个   SparkSession可用于创建DataFrame,将DataFrame注册为   表,在表上执行SQL,缓存表和读取镶木地板文件。   要创建SparkSession,请使用以下构建器模式:

>>> spark = SparkSession.builder \
...     .master("local") \
...     .appName("Word Count") \
...     .config("spark.some.config.option", "some-value") \
...     .getOrCreate()

5
2017-09-29 23:11



这个答案没有具体解决蜂巢支持问题 - Kyle Kochis
你需要追加 .enableHiveSupport() 调用其他方法 SparkSession.builder, 之前 .getOrCreate() - xenocyon
@xenocyon你的补充很重要,它可能需要一个单独的答案 - javadba


答案:


从这里 http://spark.apache.org/docs/2.0.0/api/python/pyspark.sql.html
您可以使用以下方法创建一个spark会话:

>>> from pyspark.conf import SparkConf
>>> SparkSession.builder.config(conf=SparkConf())

6
2017-08-28 13:03





正如您在scala示例中看到的,Spark Session是sql模块的一部分。类似于python。因此,请参阅 pyspark sql模块文档

class pyspark.sql.SparkSession(sparkContext,jsparkSession = None)   使用Dataset和DataFrame API编程Spark的切入点。一个   SparkSession可用于创建DataFrame,将DataFrame注册为   表,在表上执行SQL,缓存表和读取镶木地板文件。   要创建SparkSession,请使用以下构建器模式:

>>> spark = SparkSession.builder \
...     .master("local") \
...     .appName("Word Count") \
...     .config("spark.some.config.option", "some-value") \
...     .getOrCreate()

5
2017-09-29 23:11



这个答案没有具体解决蜂巢支持问题 - Kyle Kochis
你需要追加 .enableHiveSupport() 调用其他方法 SparkSession.builder, 之前 .getOrCreate() - xenocyon
@xenocyon你的补充很重要,它可能需要一个单独的答案 - javadba


from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('abc').getOrCreate()

现在要导入一些你可以使用的.csv文件

df=spark.read.csv('filename.csv',header=True)

2
2018-05-18 06:34