csv - 在 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 模块?
解决方案
让我先回答第三个问题,因为嵌入了 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,那么您将失去这些功能。
希望这可以帮助。
推荐阅读
- java - 在某些手机的 EditText 字段中没有出现键入的文本
- excel - 如何在excel中对不同的时间序列折线图进行分组?
- javascript - 尝试将来自 API 的两个不同数组映射到对象
- reactjs - 如果我在 next.js 中使用 Router.push() 导航,我得到: TypeError: products.map is not a function
- windows - 为什么 OpenCV 4.5.2 没有构建应用程序
- javascript - How to delete an image in array of images in javascript while maintaining current image list on browser screen?
- python - Python - Never Ending Multiple While Loops Interferring with Other Definitions
- c++ - What does .template do?
- c++ - 在向量中复制二叉树
- javascript - How can I make this function take dynamic values?