Я новая пчела в мире Spark SQL. В настоящее время я выполняю миграцию кода Ingestion своего приложения, который включает в себя прием данных на стадии, уровень Raw и уровень приложения в HDFS и выполнение CDC (сбор данных изменений), в настоящее время он записан в запросах Hive и выполняется через Oozie. Это необходимо перенести в приложение Spark (текущая версия 1.6). Другой раздел кода будет перенесен позже.
В spark-SQL я могу создавать кадры данных непосредственно из таблиц в Hive и просто выполнять запросы как есть (например, sqlContext.sql("my hive hql")
). Другим способом было бы использовать API-интерфейсы dataframe и переписать hql таким образом.
В чем разница в этих двух подходах?
Есть ли какой-либо выигрыш в производительности при использовании API Dataframe?
Некоторые люди предположили, что существует дополнительный уровень SQL, через который должен работать ядро Spark при непосредственном использовании запросов "SQL", что может в некоторой степени повлиять на производительность, но я не нашел никакого материала, подтверждающего это утверждение. Я знаю, что код был бы намного более компактным с API Datafrmae, но когда у меня есть все удобные hql-запросы, действительно ли стоило бы написать полный код в Dataframe API?
Благодарю вас.