• SparkSQL是把Hive转为字符串后,以参数形式传递到SparkSession.builder().enableHiveSupport().getOrcCreate().sql(Hive_String)中执行。

    例子
SparkSession spark = SparkSession.builder().enableHiveSupport().getOrcCreate();
String sql = “ALTER TABLE DB_NAME.TABLE1 DROP IF EXISTS PARTITION(pt_dt=')"+ partition_date +"')";
  • SparkSQL中,分区名、分区字段需小写。

    如上面例子中的pt_dt 分区名为小写,若写成PT_DT,则会报错。

    同时,SELECT 分区字段时也需小写。

    例如
String sql = "SELECT ID, "
+" NAME, "
+" pt_dt "
+" FROM DB_NAME.TABLE1 "
+" WHERE pt_dt = '" + partition_date + "'"
  • 对传入参数要做判空处理

    例如
if(versionNum==null || versionNum.isEmpty() || "none".equals(versionNum)) {
versionNum = "";
}
  • 字符串拼接时,注意空格问题

    若sql转为字符串没注意行首和行末的空格,可能出现sql解析时出现“粘连”现象。

    例如
String sql = "SELECT ID,"
+" NAME, "
+" pt_dt"
+"FROM DB_NAME.TABLE1 "
+" WHERE pt_dt = '" + partition_date + "'"

其中,字段pt_dt后没有空格,FROM前也没有空格,sql解析出来会变成pt_dtFROM,造成语法错误。

SparkSQL编程需注意的细节的更多相关文章

  1. IE JS编程需注意的内存释放问题

    1.给DOM对象添加的属性是一个对象的引用.范例:var MyObject = {};document.getElementById('myDiv').myProp = MyObject;解决方法:在 ...

  2. 网络编程api bind函数细节 select 细节

    struct sockaddr_in bindaddr; bindaddr.sin_family = AF_INET; bindaddr.sin_addr.s_addr = htonl(INADDR_ ...

  3. 不要忽视Web编程中的小细节

    概述:长时间以来,我们创造了某些在构造和范围内用以提升网站易用性的约定和实践.然后在我们进行web编程的时候总有一些疏忽和纰漏.这里总结了一些web编程时容易出现的小错误,并给出了相应的补救方法,希望 ...

  4. android需知小细节

    1. 布局文件命名不能包含大写字母,特殊字符.MyImageView.xml错误. 2. simpleAdapter适配器参数的含义:  3. gridview gridview的三个重要的属性: 4 ...

  5. OC编程的一些UI细节

    1/如果你想用一个半透明的View遮住当前窗口,连并NavigationBar也一并遮住的话,那么你需要 将视图添加到navigationController的View上 [self.navigati ...

  6. 关于div+css排版布局中需注意的细节问题

    第一个注意点:选择器的使用(标签.class.id) 三种选择器中id(#)的优先级最高,根据id名筛选出唯一元素: 如下输入:#menu{ width:1200px; height:45px; ba ...

  7. TensorFlow 需注意的细节问题

    1. 数据类型 不带小数点的数默认为 int32,带小数点的数默认为 float32:

  8. 你应当如何学习C++以及编程(细节是必要的,但不是重要的,把时间用在集中精力去解决问题,而不是学习新技术,那样练不成高手。在实践中提高才是最重要的。最最重要的内功还是长期学习所磨练出来的自学能力)good

    最近在学习Qt但由于没有C++的基础,感觉学的很吃力.看到pongba的这篇文章感觉不错就弄过来了, 原文地址:http://blog.csdn.net/qter_wd007/article/deta ...

  9. Spark(九) -- SparkSQL API编程

    本文测试的Spark版本是1.3.1 Text文本文件测试 一个简单的person.txt文件内容为: JChubby,13 Looky,14 LL,15 分别是Name和Age 在Idea中新建Ob ...

  10. 分享在winform下实现模块化插件编程-优化版

    上一篇<分享在winform下实现模块化插件编程>已经实现了模块化编程,但我认为不够完美,存在以下几个问题: 1.IAppContext中的CreatePlugInForm方法只能依据完整 ...

随机推荐

  1. Windows编程----内核对象竟然如此简单?

    什么是内核对象 内核对象本质上就是内存中的一块内存 ,这块内存由操作系统进行管理和分配,任何应用程序都无法直接操作这块内存区域.至于内核对象的作用,我们暂且不说,这里只需要直到它是内存中的一块内存. ...

  2. 云服务器下如何部署Flask项目详细操作步骤

    参考网上各种方案,再结合之前学过的Django部署方案,最后确定Flask总体部署是基于:centos7+nginx+uwsgi+python3+Flask之上做的. 本地windows开发测试好了我 ...

  3. PLSQL Developer使用大全

    第一章 PLSQL Developer特性 PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发.如今,有越来越多的商业逻辑和应用逻辑转向了Oracle S ...

  4. 查看SELinux状态:

    1./usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态SELinux status:                 enabl ...

  5. BUUCTF---世上无难事

    1.题目 给出一大串密文,说flag藏在其种并且是32位 2.解题 结合题目所给信息,flag在其中32位,并且语句通顺,想来是移位密码,需要加偏移量Mod的那种,最后数字应该代表了key is XX ...

  6. [源码系列:手写spring] AOP第一节:切点表达式

    在本专栏之前的文章中已经带大家熟悉了Spirng中核心概念IOC的原理以及手写了核心代码,接下来将继续介绍Spring中另一核心概念AOP.         AOP即切面编程是Spring框架中的一个 ...

  7. Bitcoin部署到openEuler RISC-V

      Bitcoin项目源码是用C++写的,我对C++以及它的编译工具又比较熟悉,这次我尝试了在openEuler RISC-V 24.09上面部署Bitcoin.网上编译Bitcoin源码的很多都是以 ...

  8. C#+Appium+Nunit实现app自动化demo

    1.新建Nunit工程 打开Rider新建一个Nunit工程并使用NuGet安装对应库,步骤如下: 2.编写代码 代码如下: using System; using NUnit.Framework; ...

  9. 使用CAMEL创建第一个Agent Society

    CAMEL介绍 CAMEL 是一个开源社区,致力于探索代理的扩展规律.相信,在大规模研究这些代理可以提供对其行为.能力和潜在风险的宝贵见解.为了促进这一领域的研究,实现了并支持各种类型的代理.任务.提 ...

  10. 通过PHP实现获取访问用户IP

    在php中自带了一个非常的简单的获取IP地址的全局变量,很多初学都获取IP都使用它了,但是对于这些我们一般用法是满足了,但是对于要求高精度这个函数还是不行的. 这个是最简单的方法,对于开了透明代理之类 ...