Spark与hive 不兼容语法

1.函数差异

1.1unix_timestamp函数差异性

用于把字符串格式日期转换成时间戳格式

1.1.1函数用法不同

spark执行unix_timestamp需要设置格式化参数,例如:select unix_timestamp(‘2023-01-01’,‘yyyy-MM-dd’)中’yyyy-MM-dd’必填, hive执行unix_timestamp,可以不设置日期格式化参数

select unix_timestamp('2023-01-01')
--1.spark返回为null,2.hive 返回1672502400

--spark兼容的语法如下
select unix_timestamp('2023-01-01','yyyy-MM-dd')
--1.spark返回为1672502400,2.hive 返回1672502400``
1.1.2对时间格式约束不同: spark对24点认为是非法的
unix_timestamp(concat('2020-06-01', ' 24:00:00'))
--1.spark返回为null,2.hive 返回1672502400

1.2date_format函数差异性

把日期格式化,spark要求格式化使用java格式化标准,例如:“yyyy-MM-dd”,hive可以支持MySQL类格式,‘%Y-%m-%d’

select date_format('2023-01-01 00:00:00','%Y-%m')
--1.spark返回null,2.hive返回2023-01

--saprk兼容的语法如下:
select date_format('2023-01-01 00:00:00','yyyy-MM')
--1.spark返回2023-01,2.hive返回2023-01

1.3精度差异

spark在写入decimal字段数据时, 并不会四舍五入; 而hive会四舍五入。

举例: -0.0761685 spark写入为 -0.076168 ;而hive写入为 -0.076169

1.4get_json_object

spark 中获取json数组的某个元素时,语法为 $[0] 而 hive 语法为 $.[0]

 -- 区别是差一个点; spark下面sql为null, hive有值
select get_json_object(info, '$.[0]') as name from test_get_json_object
-- spark如下格式方才有值
select get_json_object(info, '$[0]') as name from test_get_json_object

2.仅Hive支持

2.1.SparkSQL关联on条件不支持函数rand()

2.2.SparkSQL关联on条件不支持case when语法

相关推荐

  1. Sparkhive 兼容语法

    2024-03-25 09:26:03       29 阅读
  2. hive sql&spark 优化

    2024-03-25 09:26:03       46 阅读
  3. hive/spark用法记录

    2024-03-25 09:26:03       41 阅读
  4. Spark读写Hive

    2024-03-25 09:26:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 09:26:03       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 09:26:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 09:26:03       4 阅读
  4. Python语言-面向对象

    2024-03-25 09:26:03       5 阅读

热门阅读

  1. 如何在MySQL中实现基于时间点的恢复?

    2024-03-25 09:26:03       22 阅读
  2. 01背包问题dp

    2024-03-25 09:26:03       25 阅读
  3. 请说明Vue父组件向子组件传值的方法

    2024-03-25 09:26:03       26 阅读
  4. import * as的使用

    2024-03-25 09:26:03       23 阅读
  5. Python BaseModel和dataclass用法和区别

    2024-03-25 09:26:03       21 阅读
  6. 开源GPGPU

    2024-03-25 09:26:03       21 阅读
  7. 前端并发控制

    2024-03-25 09:26:03       19 阅读
  8. 前端开发中手机端相关知识点

    2024-03-25 09:26:03       19 阅读