У меня есть большой распределенный файл на HDFS, и каждый раз, когда я использую sqlContext с пакетом spark-csv, он сначала загружает весь файл, который занимает довольно много времени.
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("file_path")
теперь, поскольку я просто хочу выполнить некоторую быструю проверку в разы, все, что мне нужно, это немного/любые n строк всего файла.
df_n = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("file_path").take(n)
df_n = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("file_path").head(n)
но все они запускаются после загрузки файла. Не могу ли я просто ограничить количество строк при чтении самого файла? Я имею в виду эквивалент n_rows pandas в spark-csv, например:
pd_df = pandas.read_csv("file_path", nrows=20)
Или может случиться так, что искра фактически не загружает файл, первый шаг, но в этом случае, почему мой шаг загрузки файла занимает слишком много времени?
Я хочу
df.count()
чтобы дать мне только n
, а не все строки, возможно ли это?