【大数据分析】Spark SQL查询:使用SQL命令

本文介绍了如何在Spark中使用SQL,特别是Spark SQL。通过创建DataFrame并注册为临时或永久表,可以使用SQL查询数据。Spark支持SQL和HQL,推荐使用HQL,因为它提供更丰富的功能。SparkSession的catalog接口用于管理表目录,可以配置连接远程Hive metastore。此外,Spark还提供Thrift服务器,允许通过JDBC/ODBC远程执行SQL查询。
摘要由CSDN通过智能技术生成

对于使用关系型数据库或分布式数据库的用户可能更容易和更自然地使用SQL,比如Hive。在Spark SQL编写SQL命令时,它们将被转换为DataFrame上的操作。通过连接到Spark的Thrift服务器,它们可以通过标准的JDBC或ODBC协议从应用服务器连接到Spark。Spark支持两种SQL方言:SQL和HQL。Spark社区推荐的是HQL,因为HQL具有更丰富的功能。要使用HQL,需要使用Hive支持的Spark发行版。除了带来更强大的SQL解析器之外,Hive支持可让用户访问现有的Hive表,并使用现有的社区构建的Hive UDF。通过在构建SparkSession时在Builder对象上调用enableHiveSupport(),可以在Spark上启动Hive功能。

val spark = SparkSession.builder().enableHiveSupport().getOrCreate()

1、表目录和Hive metadata

大多数表SQL操作都是以名称引用的。当使用Spark SQL来执行SQL查询时,可以通过将DataFrame注册为表来引用DataFrame。当这样做时,Spark将表定义存储在表目录中。对于不支持Hive的Spark,表目录实现为简单的内存映射,这意味着表信息存在于驱动程序的内存中,并且随着Spark会话的消失而消失。另外,Hive支持的SparkSession使用Hive metastore来实现表目录。Hive metastore是一个持久性数据库,所以即使会话消失了,DataFrame定义仍然可用。

(1)注册临时表

不管是不是Hive支持的Spark版本,都可以使用createOrRepl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值