Есть ли способ получить количество строк в запросе с помощью Snowflake и его Spark Connector?

Я выполняю запрос в своем приложении Spark, который возвращает существенно большой объем данных. Я хотел бы знать, сколько строк данных запрашивается для ведения журнала. Кажется, я не могу найти способ получить количество строк, не подсчитывая их вручную или не вызывая метод для подсчета для меня, поскольку данные довольно большие, это становится дорогостоящим для ведения журнала. Есть ли место, где количество строк сохраняется и доступно для захвата?

Я прочитал здесь, что коннектор Python сохраняет rowcount в объектную модель, но я не могу найти эквивалента для Spark Connector или его базового JDBC.

Самый оптимальный способ, который я могу найти, - это rdd.collect().size в RDD, который предоставляет Spark. Это примерно на 15% быстрее, чем звонок rdd.count()

Любая помощь приветствуется ????


person Abram    schedule 12.08.2019    source источник
comment
В Dataframe API есть возможность предоставить запрос ... sqlContext.read .format(SNOWFLAKE_SOURCE_NAME) .options(sfOptions) .option("query", "SELECT COUNT(1) FROM table") .load()   -  person undefined_variable    schedule 12.08.2019
comment
Поправьте меня, если я ошибаюсь, но это не сильно отличается от простого ручного подсчета данных, которые у меня уже есть. Кроме того, для этого потребуется еще один запрос через Интернет, что также требует времени. Есть ли способ получить count(column) FROM table в этом запросе? select column1, column2 from table where...   -  person Abram    schedule 12.08.2019


Ответы (1)


Ограничение находится в API Spark, которые напрямую не предлагают метрики завершенной распределенной операции, такие как метрика количества строк после сохранения в таблице или файле. Коннектор Snowflake Spark ограничен вызовами, которые Apache Spark предлагает для своей интеграции, а атрибуты курсора, доступные в коннекторах Snowflake Python и JDBC, недоступны через Py / Spark.

Более простая форма вопроса о подсчете выполненных результатов, удаляющая специфику Snowflake, обсуждалась ранее с решениями: Spark: как получить количество записанных строк?

person Harsh J    schedule 16.01.2020