Pull to refresh
3
0
Send message
Фактически разницы может и не быть. Оба подхода сводятся к использованию оптимизатора Catalyst. Использование DataFrame API позволяет отловить некоторые ошибки на этапе компиляции, а ошибку в запросе SQL мы увидим только во время выполнения.
Вот статья, в которой производится сравнение: https://community.cloudera.com/t5/Community-Articles/Spark-RDDs-vs-DataFrames-vs-SparkSQL/ta-p/246547
В Datagram есть несколько видов трансформаций которые можно использовать из визуального редактора, один из видов это блок SparkSQL, который преобразуется в код Scala выдающий на выходе DataSet:
...
val queryResult = spark.sql("SELECT * FROM people WHERE age > 30 ")
queryResult.as[mainSparkSQLSchema] 

Также есть специализированные визуальные блоки, которые преобразуются в нотацию DataFrame API (фильты, join, группировки, и т.д.)
image
преобразуется в код

def getSelectionFilter(spark: SparkSession, Expression_3: Dataset[Expression_3Schema]) = {
    import spark.implicits._
       
    Expression_3.filter(s"""age>30""")
  }

  def getAggregationDM(spark: SparkSession, SelectionFilter: Dataset[Expression_3Schema]) = {
    import spark.implicits._
        SelectionFilter
             .groupBy("id").agg($"id")
    .as[AggregationDMSchema]  
  }

Information

Rating
Does not participate
Registered
Activity