spark-sql如何删除表_定制Spark SQL: 一种轻量级实现方案

e795711b573ff13b749f8137f5a1adad.png

Spark SQL是Apache Spark中的最重要的功能之一。在 SQL的使用上,Spark SQL和其它适用于大规模离线数据的SQL引擎 (例如Presto/Apache Hive) 是相似的。除了SQL之外,Apache Spark还提供了更为灵活的DataFrame API。

Spark SQL和Spark DataFrame API有着不同的使用场景。

  • Spark DataFrame API的表达能力比Spark SQL更强,对于有良好编程基础和代码抽象能力的工程师来说,使用DataFrame来解决复杂的数据处理问题更加便捷;

  • Spark SQL的语法几乎和Apache Hive的SQL语法几乎一致。绝大部分数据处理需求,使用Spark SQL就能够满足。使用DataFrame API,我们需要创建一个Scala工程,编译代码并打包,最终通过spark-submit提交到集群;而Spark SQL无需构建生成中间产物,就可以通过JDBC等方式提交到集群。

我们需要定制Spark SQL

但是使用Spark SQL,我们总会遇到各种极端情况需要处理,比如:

“我有一个200列的表,我想把其中的两列排除掉,把剩下的198列保存到一个新的表里面。”

如果使用Spark DataFrame API,这个问题可以这样解决:

9d64d02d8830cf707deb8df3bb3750a2.png

但是用SQL,把198个列名直接放在SQL语句里面,不具备可读性,且无法应对字段增加的情况:

select col_1, col_2, col_3, col_4, col_5, col_6, col_7, col_8, col_9, …

对于这个问题,Spark SQL有一种兼容HiveQL的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值