当前位置: 首页 > 科技观察

Spark SQL 究竟是何方神圣-

时间:2023-03-12 19:02:19 科技观察

什么是SparkSQL?.SparkSQL属于Spark处理结构化和半结构化数据的接口。结构化数据是指具有一定模式的数据,包括JSON、HiveTables和Parquet。模式意味着每条记录都有一组已知的字段。半结构化数据意味着模式和数据之间没有明确的区别。SparkSQL提供了三个主要功能来使用结构化和半结构化数据:1.提供Python、Java和Scala中的DataFrame抽象,以简化结构化数据集的处理。DataFrame类似于关系数据库中的表。2.可以读写多种结构化格式的数据(如JSON、HiveTables、Parquet)。3.让大家可以使用SQL查询数据。适用范围包括Spark程序和通过标准数据库连接器(JDBC/ODBC)访问SparkSQL的外部工具,如Tableau等商业智能工具。将SparkSQL链接到应用程序需要额外的库依赖项。可以选择在有或没有ApacheHive支持的情况下构建SparkSQL。当Spark作为二进制文件下载时,它默认使用Hive支持构建。在应用程序中使用SparkSQLSparkSQL最适合在Spark应用程序中使用。这样,我们就可以轻松地将数据加载和数据查询结合起来,并与Python、Java或Scala结合使用。基本查询示例要查询一组表,我们需要在HiveContext或SQLContext上调用sql()方法。Scala代码示例:从JSON加载客户数据:valcustomers=sqlContext.jsonFile("customers.json")customers.registerTempTable("customers")valfirstCityState=sqlContext.sql("SELECTfirst_name,address.city,address.stateFROMcustomersLIMIT10")DataFramesDataFrames关系数据库中的类似表。DataFrame其实属于Row对象的一个??RDD。DataFrame还可以识别每一行中的模式。由于能够识别数据模式,DataFrames比原生RDD更有效地存储数据。SparkSQL中的缓存更有效,因为DataFrame知道每一列的类型。数据加载和保存SparkSQL可以原生支持多种结构化数据源,包括Hive表、JSON和Parquet文件。此外,SparkSQL还有一个DataSourceAPI用于集成。DataSourceAPI可以实现的集成对象包括Avro、ApacheHBase、Elasticsearch和Canssandra等。完整的支持包列表可以在http://spark-packages.org找到。JDBC连接SparkSQL提供JDBC连接,可用于与Tableau等商业智能工具对接。用户自定义函数(简称UDF)SparkSQL支持在Python、Java、Scala中注册用户自定义函数,以便在SQL内部调用。此功能为SQL带来了更多高级功能,使用户无需编码即可使用它们。SparkSQL性能SparkSQL附加的类型信息使其更加高效,可以提供远超关系型数据库的SQL性能。它还简化了各种条件聚合操作,包括计算跨多个列的值的总和。PerformanceTuningOptionsSparkSQL中有很多不同的性能调优选项,比如codegen、内存设置、batchsize和压缩编码等。综上所述,在各种数据处理过程中,SparkSQL与Python、Scala或Java的结合代码可以带来方便和强大的实际效果。此外,SparkSQL还可以利用模式识别能力,充分发挥引擎的性能优势。原文链接:https://dzone.com/articles/what-is-spark-sql【.com独家翻译,合作站点转载请注明出处】