首页 > 解决方案 > 在 PySpark 中,SparkSession 和 Databricks 中用于导入 CSV 文件的 Spark-CSV 模块有什么区别?

问题描述

我知道在 PySpark 中导入 CSV 文件的两种方法:

1)我可以使用 SparkSession。这是我在 Jupyter Notebook 中的完整代码。

from pyspark import SparkContext
sc = SparkContext()

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('Spark Session 1').getOrCreate()

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

2) 我可以使用 Databricks 的 Spark-CSV 模块。

from pyspark import SparkContext
sc = SparkContext()

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)

df = sqlContext.read.format('com.databricks.spark.csv').options(header = 'true', inferschema = 'true').load('mtcars.csv')

1) SparkSession 相对于 Spark-CSV 的优势是什么?

2) Spark-CSV 相对于 SparkSession 的优势是什么?

3) 如果 SparkSession 完全可以导入 CSV 文件,Databricks 为什么要发明 Spark-CSV 模块?

标签: csvapache-sparkpyspark

解决方案


让我先回答第三个问题,因为嵌入了 2.0.0 spark csv。但在旧版本的 spark 中,我们必须使用 spark-csv 库。Databricks 在早期(1.3+)发明了 spark-csv。

为了解决您的第一个和第二个问题,这是 spark 1.6 与 2.0+ 的比较。如果您使用 SparkSession,您将获得 spark-csv + spark 2.0 功能提供的所有功能。如果您使用 spark-csv,那么您将失去这些功能。

希望这可以帮助。


推荐阅读