我正在通过以下代码读取csv文件:-
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.master("local[2]") \
.getOrCreate()
现在有四个不同的选项可供阅读:
df = spark.read.load("/..../xyz.csv")
df = spark.read.csv("/..../xyz.csv")
df = spark.read.format('csv').load("/..../xyz.csv")
df = spark.read.option().csv("/..../xyz.csv")
我应该使用哪个选项?
编辑:-
此外,inferSchema="true"
和inferSchema=True
都在工作。我们可以盲目使用任何一个吗?
答案 0 :(得分:3)
2
和3
是等效的。
3
允许使用其他option(key, value)
功能(请参阅4
或spark.read.format('csv').option(...).load()
),该功能可以让您跳过标题行或设置除逗号以外的定界符, 例如。
1
无法解析CSV,it uses Parquet as the default format。
def load(self, path=None, format=None, schema=None, **options):
"""Loads data from a data source and returns it as a :class`DataFrame`.
:param path: optional string or a list of string for file-system backed data sources.
:param format: optional string for format of the data source. Default to 'parquet'.
:param schema: optional :class:`pyspark.sql.types.StructType` for the input schema
or a DDL-formatted string (For example ``col0 INT, col1 DOUBLE``).
:param options: all other string options
我建议inferSchema=True
防止在字符串值中输入错误
答案 1 :(得分:1)
2是3的同盟国。 1默认情况下读取实木复合地板文件。
例如: spark.read.csv()只会调用.format(“ csv”)。load(“ path”)
@scala.annotation.varargs
def csv(paths: String*): DataFrame = format("csv").load(paths : _*)
使用哪一个都没关系。(2,3,4)正如我所说的,默认情况下1个读取实木复合地板。