跳至主要內容
📖理解SparkSession

📖理解SparkSession

梁贺祥...大约 3 分钟技术IT大数据SparkSessionPySpark

🔖 自 Spark 2.0 起,SparkSession 已成为 PySpark 与 RDD 和 DataFrame 配合使用的入口点。在2.0之前,入口点曾是SparkContext。 本节内容将主要通过定义和描述如何创建 SparkSession 以及使用-shellspark中的默认 SparkSession 变量来重点解释什么是 SparkSession........

📖理解SparkSession

1️⃣SparkSession

✏️在Spark2.0版本,pyspark.sql引入了一个新类SparkSession。SparkSession 是我们在 2.0 版本之前使用的所有不同上下文(SQLContext 和 HiveContext 等)的组合类。从 2.0 开始,SparkSession 可以用来替换 SQLContext、HiveContext 以及 2.0 之前定义的其他上下文。
✏️正如开头提到的,SparkSession 是 PySpark 的入口点,创建 SparkSession 实例将是您使用 RDD、DataFrame 和 Dataset 进行编程时编写的第一个语句。
✏️虽然 SparkContext 在 2.0 之前曾经是一个入口点,但并没有完全被 SparkSession 取代。SparkContext 的许多功能在 Spark 2.0 及更高版本中仍然可用,而且SparkSession是在内部创建了SparkConfig 和SparkContext,并通过SparkSession来提供配置创建。

SparkSession还包括其他不同上下文的API:

  • SparkContext,
  • SQLContext,
  • StreamingContext,
  • HiveContext.

❓ PySpark程序中可以创建多少个SparkSession?

可以创建多个SparkSession。如果想要PySpark表在逻辑上分离时,就需要使用`SparkSession.builder()`或者`SparkSession.newSession()`创建多个SparkSession

2️⃣创建SparkSession

在PySpark程序中,需要使用构造器方法builder方法。builder方法的使用方法如下:

# Create SparkSession from builder
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[1]") \
                    .appName('SparkByExamples.com') \
                    .getOrCreate()
  • master(): 如果是在集群上运行程序,需要使用主机名称为参数传入master()。这个参数值通常是yarn或者是mesos,这取决于你的主节点的配置。
  • local[num]: 在单机模式下运行的时候使用。num应该是一个整数值,表示的是在使用RDD、DataFrame、DataSet时应该创建多少个分区。一般这个值可以是CPU核心数。
  • appName(): 设置应用名称
  • getOrCreate(): 从名字即可看出,获取或者创建SparkSession,如果已经存在则获取,否则创建新的SparkSession

创建另一个SparkSession:

# Create new SparkSession
spark2 = SparkSession.newSession
print(spark2)

使用上面的代码会创建一个新的SparkSession,并且与现有的SparkSession使用相同的应用名称。两个会话的底层 SparkContext 是相同的,因为每个 PySpark 应用程序只能有一个上下文。

获取现有的SparkSession

# Get Existing SparkSession
spark3 = SparkSession.builder.getOrCreate
print(spark3)

3️⃣使用 Spark 配置

可以使用config方法为SparkSession增加配置

# 使用 config()
spark = SparkSession.builder 
      .master("local[1]") 
      .appName("SparkByExamples.com") 
      .config("spark.some.config.option", "config-value") 
      .getOrCreate()

4️⃣ 创建启用Hive的SparkSession

为了将 Hive 与 PySpark 一起使用,您需要使用该enableHiveSupport()方法启用它。

spark = SparkSession.builder \
      .master("local[1]") \
      .appName("SparkByExamples.com") \
      .config("spark.sql.warehouse.dir", "<path>/spark-warehouse") \
      .enableHiveSupport() \
      .getOrCreate()

5️⃣ 获取或配置PySpark Config

创建 SparkSession 后,您可以在运行时添加 Spark 配置或获取所有配置。

# Set Config
spark.conf.set("spark.executor.memory", "5g")

# Get a Spark Config
partitions = spark.conf.get("spark.sql.shuffle.partitions")
print(partitions)

6️⃣ 简单创建DataFrame

使用createDataFrame创建DataFrame

# Create DataFrame
df = spark.createDataFrame(
    [("Scala", 25000), ("Spark", 35000), ("PHP", 21000)])
df.show()

# Output
#+-----+-----+
#|   _1|   _2|
#+-----+-----+
#|Scala|25000|
#|Spark|35000|
#|  PHP|21000|
#+-----+-----+

🔗 其他创建DataFrame的方法

、

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8