QBoard » Big Data » Big Data - Spark » What is the difference between Apache Spark SQLContext vs HiveContext?

What is the difference between Apache Spark SQLContext vs HiveContext?

  • What are the differences between Apache Spark SQLContext and HiveContext ?

    Some sources say that since the HiveContext is a superset of SQLContext developers should always use HiveContext which has more features than SQLContext. But the current APIs of each contexts are mostly same.

    • What are the scenarios which SQLContext/HiveContext is more useful ?.
    • Is HiveContext more useful only when working with Hive ?.
    • Or does the SQLContext is all that needs in implementing a Big Data app using Apache Spark ?
      October 9, 2021 1:29 PM IST
    0
  • Spark 2.0+

    Spark 2.0 provides native window functions (SPARK-8641) and features some additional improvements in parsing and much better SQL 2003 compliance so it is significantly less dependent on Hive to achieve core funcionality and because of that HiveContext (SparkSession with Hive support) seems to be slightly less important.

    Spark < 2.0

    Obviously if you want to work with Hive you have to use HiveContext. Beyond that the biggest difference as for now (Spark 1.5) is a support for window functions and ability to access Hive UDFs.

    Generally speaking window functions are a pretty cool feature and can be used to solve quite complex problems in a concise way without going back and forth between RDDs and DataFrames. Performance is still far from optimal especially without PARTITION BY clause but it is really nothing Spark specific.

    Regarding Hive UDFs it is not a serious issue now, but before Spark 1.5 many SQL functions have been expressed using Hive UDFs and required HiveContext to work.

    HiveContext also provides more robust SQL parser. See for example: py4j.protocol.Py4JJavaError when selecting nested column in dataframe using select statetment

    Finally HiveContext is required to start Thrift server.

    The biggest problem with HiveContext is that it comes with large dependencies.
      November 27, 2021 10:30 AM IST
    0
  • HiveContext is a super set of the SQLContext. Additional features include the ability to write queries using the more complete HiveQL parser, access to Hive UDFs, and the ability to read data from Hive tables. And if you want to work with Hive you have to use HiveContext, obviously. 

    But with the arrival of Spark 2.0, the windowing operations are supported in SQLContext and the new this version features some additional improvements in parsing and has much better SQL 2003 compliance so it is significantly less dependent on Hive to achieve core functionality and because of that HiveContext (SparkSession with Hive support) seems to be slightly less important when compared to Spark SQLContext

    When programming against Spark SQL we have two entry points depending on whether we need Hive support. The recommended entry point is the HiveContext to provide access to HiveQL and other Hive-dependent functionality. The more basic SQLContext provides a subset of the Spark SQL support that does not depend on Hive.

     

    The biggest problem with HiveContext is that it comes with large dependencies.

      November 29, 2021 11:44 AM IST
    0
  • When programming against Spark SQL we have two entry points depending on whether we need Hive support. The recommended entry point is the HiveContext to provide access to HiveQL and other Hive-dependent functionality. The more basic SQLContext provides a subset of the Spark SQL support that does not depend on Hive.

    -The separation exists for users who might have conflicts with including all of the Hive dependencies.

    -Additional features of HiveContext which are not found in in SQLContext include the ability to write queries using the more complete HiveQL parser, access to Hive UDFs, and the ability to read data from Hive tables.

    -Using a HiveContext does not require an existing Hive setup.

      October 21, 2021 2:28 PM IST
    0
  • HiveContext is still the superset of sqlcontext,it contains certain extra properties such as it can read the configuration from hive-site.xml,in case you have hive use otherwise simply use sqlcontext
      October 23, 2021 4:12 PM IST
    0