spark中不同的读取选项有啥区别?
Posted
技术标签:
【中文标题】spark中不同的读取选项有啥区别?【英文标题】:What is the diffence between different read options in spark?spark中不同的读取选项有什么区别? 【发布时间】:2018-07-02 07:05:37 【问题描述】:我正在通过以下代码读取 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
都在工作。我们可以盲目使用任何一种吗?
【问题讨论】:
【参考方案1】: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
以防止字符串值出现拼写错误
【讨论】:
谢谢@cricket_007!【参考方案2】:2 是 3 的别名。 1 默认读取 parquet 文件。
例如: spark.read.csv() 只是调用 .format("csv").load("path")
@scala.annotation.varargs
def csv(paths: String*): DataFrame = format("csv").load(paths : _*)
不管你用的是哪一个。(2,3,4) 正如我所说的 1 默认读取 parquet。
【讨论】:
以上是关于spark中不同的读取选项有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章