精华内容
下载资源
问答
  • hive修改数据类型
    万次阅读
    2020-01-15 16:19:53

    hive修改字段类型语句:alter table 表名 change column 原字段名 新字段名 字段类型;
    alter table user_chain change column u_register u_registe date;(u_register原类型为string类型)
    这样修改会报一个错误:
    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. The following columns have types incompatible with the existing columns in their respective positions :
    u_registe
    原因分析:hive内部的类型转换的限制。总结为:
    1、我们能够修改整型字段为double类型字段,因为double类型能够承载整型数据,
    但是我们修改double类型字段为整型字段会有问题,因为整型字段不能够满足double数据
    2、任何类型基本都可以转为字符串,任何double、float、int类型的数据都可以作为字符串处理
    3、数据类型的转换为转换后的数据不会截断原来的数据

    如果只想改变列的类型而不关心数据的准确性,可以设置set hive.metastore.disallow.incompatible.col.type.changes=false;

    新增字段表

    alter table 表名 add columns(字段名 数据类型)

    修改表的字段顺序
    ALTER TABLE t1 CHANGE column student student varchar(20) comment ‘学生姓名’ AFTER class;
    这种修改的做法不建议用,只是逻辑上修改了字段,物理上并没有变化,对特定情况下的表有一定影响

    更多相关内容
  • Hive数据类型转换

    2021-06-16 16:10:31
    Hive 支持关系型数据中大多数基本数据类型 允许的隐式转换   void boolean tinyint smallint int bigint float double decimal string varchar timestamp date ...

    Hive 支持关系型数据中大多数基本数据类型

    允许的隐式转换

     voidbooleantinyintsmallintintbigintfloatdoubledecimalstringvarchartimestampdatebinary
    void toTRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUE
    boolean toFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE
    tinyint toFALSEFALSETRUETRUETRUETRUETRUETRUETRUETRUETRUEFALSEFALSEFALSE
    smallint toFALSEFALSEFALSETRUETRUETRUETRUETRUETRUETRUETRUEFALSEFALSEFALSE
    int toFALSEFALSEFALSEFALSETRUETRUETRUETRUETRUETRUETRUEFALSEFALSEFALSE
    bigint toFALSEFALSEFALSEFALSEFALSETRUETRUETRUETRUETRUETRUEFALSEFALSEFALSE
    float toFALSEFALSEFALSEFALSEFALSEFALSETRUETRUETRUETRUETRUEFALSEFALSEFALSE
    double toFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUETRUETRUEFALSEFALSEFALSE
    decimal toFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUETRUEFALSEFALSEFALSE
    string toFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUETRUETRUEFALSEFALSEFALSE
    varchar toFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUETRUETRUEFALSEFALSEFALSE
    timestamp toFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUETRUEFALSEFALSE
    date toFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUEFALSETRUEFALSE
    binary toFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUE

     可以将 Metastore 中的列的类型从任何类型更改为任何其他类型。更改类型后,如果可以使用新类型正确显示数据,则将显示数据。否则,数据将显示为 NULL。

     

    案例参考:https://my.oschina.net/kavn/blog/868041

    展开全文
  • 关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~目录一、Hive数据类型1.1基本数据类型Hive的基本数据类型有10种,如下所示:Hive数据类型对应的Java数据类型长度TINYINTbyte1byte有符号整数SMALINTshort2...

    上篇文章我们在服务器上部署了Hive并将它的Metastore存储在了MySQL上,本文介绍一下Hive的数据类型以及常用的一些属性配置。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~

    目录

    一、Hive的数据类型

    1.1 基本数据类型

    Hive的基本数据类型有10种,如下所示:

    Hive数据类型对应的Java数据类型长度

    TINYINTbyte1byte有符号整数

    SMALINTshort2byte有符号整数

    INTint4byte有符号整数

    BIGINTlong8byte有符号整数

    BOOLEANboolean布尔类型,true或者false

    FLOATfloat单精度浮点数

    DOUBLEdouble双精度浮点数

    STRINGstring字符系列,可以指定字符集,可以使用单引号或者双引号。相当于数据库的varchar类型

    TIMESTAMP时间类型

    BINARY字节数组

    1.2 集合数据类型

    1.2.1 介绍

    数据类型描述语法示例

    STRUCT通过“点”符号访问元素内容。例如,如果某个列的数据类型是STRUCT{one STRING, two STRING},那么第1个元素可以通过字段.one来引用。struct()

    例如struct

    MAPMAP是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是MAP,其中键->值对是’one’->’xzw’和’two’->’yxy’,那么可以通过字段名[‘two’]获取最后一个元素map()

    例如map

    ARRAY数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘one’, ‘two’],那么第2个元素可以通过数组名[1]进行引用。Array()

    例如array

    Hive有三种复杂数据类型STRUCT、ARRAY和MAP。STRUCT与C语言中的Struct类似,它封装了一个命名字段集合。ARRAY和MAP与Java中的Array和Map类似。复杂数据类型允许任意层次的嵌套。

    1.2.2 示例

    1、现有如下的数据

    [{

    "name": "xzw",

    "loc": ["qd" , "zb"],

    "city": {

    "ta": 4,

    "qd": 3

    }

    "subject": {

    "dm": "Python" ,

    "reg": "bigdata"

    }

    },

    {

    "name": "yxy",

    "loc": ["bj" , "sh"],

    "city": {

    "bj": 1,

    "sh": 3

    }

    "subject": {

    "dm": "Java" ,

    "reg": "AI"

    }

    }]

    2、首先我们需要构造一下导入Hive中的数据文件,数据文件如下所示:

    xzw,qd|zb,ta:4|qd:3,Python|bigdata

    yxy,bj|sh,bj:1|sh:3,Java|AI

    值得注意的是,MAP,STRUCT和ARRAY里的元素间关系都可以用同一个字符表示,这里用“|”。构造好的test.txt文件放到/root/files目录下。

    3、创建Hive表

    create table test(

    name string,

    loc array,

    city map,

    subject struct

    )

    row format delimited fields terminated by ','

    collection items terminated by '|'

    map keys terminated by ':'

    lines terminated by '

    ';

    4、加载数据到Hive表中

    load data local inpath '/root/files/test.txt' into table test;

    5、查询测试

    1.3 数据类型转换

    Hive的数据类型是可以进行隐式转换的,其规则如下:

    (1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。

    (2)所有整数类型、FLOAT和STRING类型都可以隐式地转换成DOUBLE。

    (3)TINYINT、SMALLINT、INT都可以转换为FLOAT。

    (4)BOOLEAN类型不可以转换为任何其它的类型。

    (5)可以使用CAST操作显示进行数据类型转换。例如CAST('1' AS INT)将把字符串'1' 转换成整数1;如果强制类型转换失败,如执行CAST('X' AS INT),表达式返回空值 NULL。

    二、常用的属性配置

    在讲解常用的属性配置之前,我们先来看一下怎样访问或者是连接Hive以及Hive常用的一些交互命令等,这对后续属性配置的讲解有一个打基础的作用。

    2.1 HiveServer2服务

    HiveServer2(HS2)是服务器接口,使远程客户端执行对Hive的查询和检索结果。换句话说,可以使用JDBC通过HiveServer2服务对Hive进行访问。以下便是如何开启HiveServer2服务。

    1、首先通过以下命令启动HiveServer2服务:

    hiveserver2

    2、启动beeline

    beeline

    3、连接HiveServer2服务

    通过以下命令连接HiveServer2服务:

    !connect jdbc:hive2://master:10000

    2.2 Hive的交互命令

    可以通过如下命令,查看Hive都有哪些交互命令:

    hive -help

    2.3 Hive的其他命令

    1、在命令行查看hdfs文件系统

    dfs -ls /;

    2、在命令行查看本地文件系统

    !ls /root/files;

    3、查看在Hive中输入的历史命令

    在根目录下有一个叫做.hivehistory的命令,如下图所示:

    2.4 常用的属性配置

    2.4.1 查询显示表头信息

    在hive-site.xml中添加如下配置:

    hive.cli.print.header

    true

    2.4.2 显示当前数据库名称

    在hive-site.xml中添加如下配置:

    hive.cli.print.current.db

    true

    2.4.3 配置Hive数据仓库位置

    默认数据仓库的最原始位置是在hdfs上的/user/hive/warehouse路径下。在仓库目录下,没有对默认的数据库default创建文件夹。如果某张表属于default数据库,它会直接在数据仓库目录下创建一个文件夹。在hive-site.xml中添加如下配置解决此问题:

    hive.metastore.warehouse.dir

    /user/hive/warehouse/default

    location of default database for the warehouse

    并修改执行权限:

    hdfs dfs -chmod g+w /user/hive/warehouse/default

    在default数据库中新建一张表进行测试:

    可以发现在default数据库中新建的表都出现在了hdfs上的default目录下:

    2.4.4 配置Hive运行日志信息存放位置

    默认情况下,Hive的日志信息存放在/tmp/root/目录下:

    修改hive-log4j.properties文件将日志信息放到指定位置,这里有个问题出现了,有的小伙伴发现在hive测conf目录下,没有这个配置文件,所以,在修改这个配置文件之前,还需要进行一步下面的操作:

    此时,修改配置文件中的对应参数即可:

    2.4.5 参数配置的优先级

    在Hive的参数配置中,有三种参数的配置方式,分别如下。

    1、通过配置文件。默认的配置文件是hive-default.xml,用户自定义的配置文件是hive-site.xml。用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程都有效。2、在命令行中通过set添加配置,例如:set mapred.reduce.tasks=100;。这种方式是临时修改配置文件,当Hive下次启动时,将会失效。3、在启动Hive时通过设置参数-hiveconf来设置,例如:hive -hiveconf mapred.reduce.tasks=10。同样的,这种方式是临时修改配置文件,当Hive下次启动时,将会失效。

    上述三种设定方式的优先级为修改配置文件

    本文到此就接近尾声了,你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~

    展开全文
  • Hive数据类型&类型转换

    千次阅读 2020-05-08 14:34:46
    Hive数据类型 Java 数据类型 长度 例子 TINYINT byte 1byte 有符号整数 20 SMALINT short 2byte...

    1. 基本数据类型

    Hive数据类型

    Java 数据类型

    长度

    例子

    TINYINT

    byte

    1byte 有符号整数

    20

    SMALINT

    short

    2byte 有符号整数

    20

    INT

    int

    4byte 有符号整数

    20

    BIGINT

    long

    8byte 有符号整数

    20

    BOOLEAN

    boolean

    布尔类型,true 或者 false

    TRUE FALSE

    FLOAT

    float

    单精度浮点数

    3.14159

    DOUBLE

    double

    双精度浮点数

    3.14159

    STRING

    string

    字符系列。可以指定字符集。可以使用单引号或者双引号。

    ‘now is the time’ “for all good men”

    TIMESTAMP

    时间类型

    BINARY

    字节数组

    对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。

    2. 集合数据类型

    数据类型

    描述

    语法示例

    STRUCT

    和 c 语言中的 struct 类似,都可以通过“点”符号访问元素内容。例如,如果某个列的数据类型是 STRUCT{first STRING,last STRING},那么第 1 个元素可以通过字段.first 来引用。

    struct()

    MAP

    MAP 是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是 MAP,其中键->值对是’first’->’John’和’last’->’Doe’,那么可以通过字段名[‘last’]获取最后一个元素

    map()

    ARRAY

    数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘John’, ‘Doe’],那么第 2 个元素可以通过数组名[1]进行引用。

    Array()

    Hive 有三种复杂数据类型 ARRAY、MAP 和 STRUCT。ARRAY 和 MAP 与 Java 中的Array 和 Map 类似,而 STRUCT 与 C 语言中的 Struct 类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。

    案例实操

    1) 假设某表有如下一行,我们用 JSON 格式来表示其数据结构。在 Hive 下访问的格式为

    {
    
    "name": "songsong",
    
    "friends": ["bingbing" , "lili"] , //列表 Array,
    
    "children": { //键值 Map,
    
    "xiao song": 18 ,
    
    "xiaoxiao song": 19
    
    }
    
    "address": { //结构 Struct,
    
    "street": "hui long guan" ,
    
    "city": "beijing"
    
    }
    
    }

    2)基于上述数据结构,我们在 Hive 里创建对应的表,并导入数据。

    创建本地测试文件 test1.txt

    songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
    
    yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing

    注意:MAP,STRUCT 和 ARRAY 里的元素间关系都可以用同一个字符表示,这里用“_”。

    3)Hive 上创建测试表 test

    create table test(
    
    name string,
    
    friends array<string>,
    
    children map<string, int>,
    
    address struct<street:string, city:string>
    
    )
    
    row format delimited fields terminated by ','
    
    collection items terminated by '_'
    
    map keys terminated by ':'
    
    lines terminated by '\n';

    字段解释:

    row format delimited fields terminated by ',' -- 列分隔符
    
    collection items terminated by '_'    --MAP STRUCT 和 ARRAY 的分隔符(数据分割符号)
    
    map keys terminated by ':' -- MAP 中的 key 与 value 的分隔符
    
    lines terminated by '\n';   -- 行分隔符

    4)导入文本数据到测试表 (或者直接 put 到这个目录也可以)

    hive (db_hive)> load data local inpath '/opt/data/test1.txt' into table test;

    5)访问三种集合列里的数据,以下分别是 ARRAY,MAP,STRUCT 的访问方式

    hive (db_hive)> select friends[1],children['xiao song'],address.city from test

    where name="songsong";

    6)查看test表数据

    3. 类型转化

    Hive 的原子数据类型是可以进行隐式转换的,类似于 Java 的类型转换,例如某表达式使用 INT 类型,TINYINT 会自动转换为 INT 类型,但是 Hive 不会进行反向转化,例如,某表达式使用 TINYINT 类型,INT 不会自动转换为 TINYINT 类型,它会返回错误,除非使用 CAST 操作。

    1.隐式类型转换规则如下

    (1)任何整数类型都可以隐式地转换为一个范围更广的类型,如 TINYINT 可以转换成 INT,INT 可以转换成 BIGINT。

    (2)所有整数类型、FLOAT 和 STRING 类型都可以隐式地转换成 DOUBLE。

    (3)TINYINT、SMALLINT、INT 都可以转换为 FLOAT。

    (4)BOOLEAN 类型不可以转换为任何其它的类型。

    2.可以使用 CAST 操作显示进行数据类型转换

    例如 CAST('1' AS INT)将把字符串'1' 转换成整数 1;如果强制类型转换失败,如执行CAST('X' AS INT),表达式返回空值 NULL。

    展开全文
  • hive修改字段类型

    万次阅读 2020-12-30 14:50:40
    alter table 表名 change column 原字段名 现字段名 字段类型
  • Hive 数据类型 + Hive sql

    千次阅读 2020-12-31 09:16:56
    Hive 数据类型 + Hive sql基本类型整型int tinyint (byte) smallint(short) bigint(long)浮点型float double布尔boolean字符string char(定长) varchar(变长)时间类型timestamp date引用/复合类型优点类似于容器...
  • Hive系列 (六):Hive数据类型转换

    千次阅读 2021-08-25 16:41:25
    hive数据类型转换规则及转换原则,日期类型转换
  • Hive 更改表字段,当无数据时直接使用 alert 方式更改表信息。当表中已有数据时,先复制表再重新插入数据
  • 一、数据类型1、基本数据类型Hive 支持关系型数据中大多数基本数据类型类型描述示例booleantrue/falseTRUEtinyint1字节的有符号整数-128~127 1Ysmallint2个字节的有符号整数,-32768~327671Sint4个字节的带符号整数1...
  • 本文部分内容来源《Hadoop海量数据处理 技术详解与项目实战》人民邮电出版社一、 基本数据类型数据类型所占字节开始支持版本TINYINT1byte,-128 ~ 127SMALLINT2byte,-32,768 ~ 32,767INT4byte,-2,147,483,648 ~ 2,...
  • Hive到0.13.0版本为止已经支持越来越多的数据类型,像传统数据库中的VCHAR、CHAR、DATE以及所特有的复合类型MAP、STRUCT等。Hive中的数据类型可以分为数值类型、字符串类型、日期时间类型、复合类型以及其它类型,...
  • HiveSQL中复杂数据类型操作
  • Hive 数据类型 数据类型中最常用的是基本数据类型中的 INT、BIGINT、BOOLEAN、DOUBLE以及STRING。 基本数据类型 对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明...
  • hive作为当下流行的hadoop数据处理仓库工具,在企业与开发中不断被使用。本文将具体阐述hive数据库基本操作、数据查询的部分命令等。
  • 使用 CAST 函数将 STRING 转为 BIGINT: ...补充知识:hive中bigint和varchar字段做关联,关联数据错误的解决方法 把bigint和varchar都隐式转换成String类型的就可以关联出正确的结果了 cast(t1.PARTY_NUM as str
  • Hive数据存储模式

    2017-10-08 17:44:16
    Hive数据存储模式Hive数据存储模式Hive数据存储模式Hive数据存储模式
  • 目录 一、Java数据类型 ...Hive数据类型比较特殊,与传统Java数据类型不一样,先回顾一下Java的数据类型 一、Java数据类型 1. 八种基本数据类型 (1)数值型-整数:byte1B、short2B、int4B、long8B (2)...
  • 1、hive基本数据类型 2、数据类型 实例:创建不同数据类型的表 create table test( name string, friends array<string>, children map<string, int>, address struct<street:string, ...
  • HIVE数据类型毕竟HIVE穿着SQL的外壳,肯定支持诸如Mysql这种RDBMS的数据类型,如int,varchar,但是它还具有非常多自有的数据类型,包括复杂的数据类型(数组,Map等)也是支持的!数字类型,日期类型,String类型,...
  • 当前的内容主要用于本人学习和复习,当前内容主要为Hive中的数据类型 当前内容来源:wikis官方文档 2.查看基本类型 发现其中的基本数据类型和MySQL中的数据类型完全一致(学习过mysql可以省略这个) 3.查看复杂类型 ...
  • hive修改字段后查询不了数据

    千次阅读 2019-11-01 11:44:14
    情况描述 hive版本为: apache-hive-2.1.0 hadoop版本为: apache-hadoop-2.6.0-cdh-5.13.3 修改添加两个字段删除一个字段,但跟日志文件数据是一一对应的。...hive修改字段 通过alert table table...
  • hive修改分区类型

    2021-02-01 04:41:05
    修改分区字段类型时会报错如下:CREATE EXTERNAL TABLE tmp.tmp_table_name(col_name string)PARTITIONED BY (dt string COMMENT 'dt',part_col_name string COMMENT 'part_col_name')ROW FORMAT DELIMITED FIELDS...
  • 一、hive与常见数据库的区别 hive数据仓库的基础工具,能够将结构化的数据映射为一张张表...由于hive是针对数据仓库进行设计的,而数据仓库主要是进行数据分析,即读多写少,所以hive中是不建议对数据进行改写,...
  • Hive 表字段数据修改

    千次阅读 2022-04-12 11:11:55
    hive字段信息修改 修改表注释 ALTER TABLE table1 SET TBLPROPERTIES('comment' = '每日背书企业成交明细(去重)'); 增加字段 alter table table1 add columns(bonus varchar(255) comment '奖金'); alter table ...
  • Hive基本数据类型&DDL

    2021-03-25 11:52:04
    Hive基本数据类型&DDL 1.hive的基本数据类型 Hive Mysql JAVA TINYINT TINYINT byte SMALLINT SMALLINT short INT INT int BIGINT BIGINT long BOOLEAN 无 boolean FLOAT FLOAT float ...
  • 数仓工具—Hive复合数据类型(9)

    万次阅读 2020-12-25 22:50:21
    除了使用`string`之外的基础数据类型Hive中的列支持使用struct, map, array,union_type 等复合数据类型。 复合类型是指array、map、struct和uniontype,一般在企业中使用 array和map会比较多一些。
  • hive字段类型修改问题总结

    千次阅读 2021-05-20 20:29:56
    因将线上表的某个字段的类型进行了更改,进而引发了下面两个问题: 字段的声明类型和parquet存储时的类型不一致 table schema和partition schema不一致 致使数据表直接无法使用。 具体出错的问题从执行日志中可以...
  • Hive修改数据

    万次阅读 2017-08-29 17:23:06
    Alter Table命令用来修改hive中的表结构,基本格式如下:ALTER TABLE name RENAME TO new_name ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...]) ALTER TABLE name DROP [COLUMN] column_name ALTER ...
  • 结论:字段类型不一致,关联时将key转为double,导致精度丢失 示例:select cast(186994576061124660 as double)和select cast(186994576061124559 as double)结果都是1.86994576061124672E17 导致最终mapping结果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,694
精华内容 12,277
关键字:

hive修改数据类型