hive
hql
数据类型
提示
Hive SQL 教程 编写中,使用过程中有任何建议,提供意见、建议、纠错、催更加微信 gairuo123。欢迎关注本教程作者新书《深入浅出Pandas:利用Python进行数据处理与分析》 。作者开办 Python 数据分析培训,详情 Python 数据分析培训。
本文将介绍 Hive 中所支持的数据类型,帮助我们在编写 Hql 时正确把握数据类型,对于不匹配的数据类型进行必要的转换。
在一张表中一个列是同一个类型,不同的列是不同的类型,这个和 Excel、关系型数据库相同。支持以下基元类型:
解释:
这些类型按以下层次结构组织(其中父实例是所有子实例的超级类型):
从子类型到祖先类型允许隐式转换,此类型层次结构定义了如何在查询语言中隐式转换类型。因此,当查询表达式需要 type1 并且数据是 type2 时,如果 type1 是类型层次结构中 type2 的祖先,那么 type2 将隐式转换为 type1 。
请注意,类型层次结构允许将字符串隐式转换为 DOUBLE。显式类型转换可以使用 cast 运算符完成。
可以使用以下方法从基本类型和其他复合类型构建复杂类型:
使用基本类型和用于创建复杂类型的构造,可以创建具有任意嵌套级别的类型。例如,定义一个 User 类型,包括以下字段:
时间戳一直是许多混乱的根源,因此我们试图记录 Hive 的预期语义。
Java 的 "LocalDateTime" 有时间将日期和时间记录为年、月、日、时、分和秒,它不带时区。无论本地时区如何,这些时间戳总是具有相同的值。
例如,“2021-03-01 12:34:56”的时间戳值被分解为年、月、日、时、分、秒字段,但没有可用的时区信息。它不对应于任何特定的瞬间。无论本地时区如何,它都将始终是相同的值。除非您的应用程序一致地使用 UTC,否则对于大多数应用程序,带本地时区的时间戳比时间戳更受欢迎。当用户说一个事件发生在 10:00 时,它总是指某个时区,表示某个时间点,而不是任意时区的 10:00。
Java 的 “Instant” 时间戳定义了一个时间点,不管数据从何处读取该时间点保持不变。因此,时间戳将由本地时区调整以匹配原始时间点。
类型 | 洛杉矶 | 纽约 |
---|---|---|
timestamp | 2014-12-12 12:34:56 | 2014-12-12 12:34:56 |
timestamp with local time zone | 2014-12-12 12:34:56 | 2014-12-12 15:34:56 |