Какова разница между различными вариантами чтения в искре? - PullRequest
0 голосов
/ 02 июля 2018

Я читаю CSV-файл с помощью следующего кода: -

    from pyspark.sql import SparkSession
    spark = SparkSession.builder \
            .master("local[2]") \
            .getOrCreate()

Теперь есть четыре варианта чтения:

  1. df = spark.read.load("/..../xyz.csv")
  2. df = spark.read.csv("/..../xyz.csv")
  3. df = spark.read.format('csv').load("/..../xyz.csv")
  4. df = spark.read.option().csv("/..../xyz.csv")

Какой вариант мне использовать?

EDIT: -

Также работают inferSchema="true" и inferSchema=True. Можем ли мы слепо использовать кого-либо?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

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 по умолчанию читайте паркет.

0 голосов
/ 02 июля 2018

2 и 3 эквивалентны.

3 допускает дополнительную функцию option(key, value) (см. 4 или spark.read.format('csv').option(...).load()), которая может позволить вам пропустить строку заголовка или установить, например, разделитель, отличный от запятой.

1 не анализирует CSV, он использует Parquet в качестве формата по умолчанию .

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, чтобы предотвратить опечатки в строковом значении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...