В этой части кода из Spark Programming Guide,Ленивый оценки в SparkSQL
# The result of loading a parquet file is also a DataFrame.
parquetFile = sqlContext.read.parquet("people.parquet")
# Parquet files can also be registered as tables and then used in SQL statements.
parquetFile.registerTempTable("parquetFile");
teenagers = sqlContext.sql("SELECT name FROM parquetFile WHERE age >= 13 AND age <= 19")
teenagers.collect()
Что именно происходит в куче Java (как память Спарк управляемом), когда каждая линия выполнена?
У меня есть эти вопросы специально
- ли sqlContext.read.parquet ленивым? Из-за того, что весь файл паркета загружается в память?
Когда выполняется действие по сбору, для применения SQL-запроса,
a. представляет собой весь паркет, сначала сохраненный как RDD, а затем обработанный или
b. это файл паркета, обработанный сначала, чтобы выбрать только столбец
name
, затем сохранен как RDD, а затем отфильтрован на основе условияage
от Spark?
Операции DataFrameReader в целом не ленивы. Они требуют либо метаданных, либо доступа к данным в зависимости от источника. – zero323
просьба указать ссылку для вашего комментария –
Ссылка находится в источнике кода DataFrame @atulgupta – eliasah