查看“Hive基础”的源代码
←
Hive基础
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
=== 参数设置 === 优先级: 配置文件 < 命令行参数 < 终端里输入命令 注意某些系统级的参数, 例如 log4j 的设定必须用前两种方式设定, 因为那些参数的读取在会话建立以前已经完成了。 * 配置文件方式 hive-default.xml 和 hive-site.xml * 命令行参数方式 启动 Hive 时,hive -hiveconf mapred.reduce.tasks=10 * 终端里输入命令 set 查看所有配置 set xxx 查看xxx参数的值 set xxx 1 设置xxx参数的值 === 基础命令 === hive -e “sql语句” hive -f “sql文件路径” ===分割符=== Hive中默认的分割符为: 列:^A 行:\n 在数据文件中显示为:"1000^AHello, World!\n",数据中如果包含:"\001","\n"等分隔符,需要提前处理掉。 如果需要自定义分隔符,需要设置: ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' === 数据类型 === ==== 基本数据类型 ==== {| class="wikitable" !Hive 数据类型 !Java 数据类型 |- |TINYINT |byte |- |SMALINT |short |- |INT |int |- |BIGINT |long |- |BOOLEAN |boolean |- |FLOAT |float |- |DOUBLE |double |- |STRING |string |} TIMESTAMP String 类型相当于数据库的 varchar 类型, 该类型是一个可变的字符串,理论上它可以存储 2GB 的字符数 ==== 集合数据类型 ==== * STRUCT struct<street:string, city:string> * MAP map<string, int> * Array array<string> === 索引、分区与分桶 === ==== 索引 ==== Hive从0.7.0版本开始加入了索引,0.8版本后增加 bitmap 索引。索引表不会自动 rebuild,如果表有数据新增或删除,那么必须手动 rebuild 索引表数据 ==== 分区 ==== 表分区是指将数据按照物理分层的方式进行区分开,加快查询的速度,同时也起到数据快照的作用。可以指定单个字段也可以指定多个字段; * 静态分区是在创建表时手动指定 * 动态分区是通过数据来进行判断,只有在 SQL 执行时才能确定。动态分区不能使用 load 加载数据,需要使用insert into 默认创建的分区是静态分区,如果要指定动态分区需要配置系统参数。 ==== 桶 ==== 当单个分区或者表中的数据量越来越大,当分区不能更细粒的划分数据时,采用分桶技术将数据更细粒度的划分和管理。 分桶关键字:BUCKET 指定分桶的字段:clustered by (uid) ==== 区别 ==== * 分区使用的是表外字段,分桶使用的是表内字段 * 分桶是更细粒度的划分、管理数据,更多用来做数据抽样、JOIN操作 * 分区是粗粒度的将数据隔离,分桶是更加细粒度的将数据隔离 === Load Data === LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1,partcol2=val2 ...)] example: load data local inpath '/u01/data/bank.hive' <s>overwrite</s> into table test.bank ==== Load CSV ==== <nowiki>#</nowiki> 注意:Load CSV 并无报错,但导入皆为 NULL。一般 CSV 导入模式是先导入成 textfile, 之后再从临时表导入成 parquet。 * 有 LOCAL 表示从本地文件系统加载(文件会被拷贝到HDFS中) * 无 LOCAL 表示从 HDFS 中加载数据(注意:文件直接被移动到 Hive 相应库下,而不是拷贝。) * OVERWRITE 表示是否覆盖表中数据(或指定分区的数据)(没有 OVERWRITE 则 APPEND。) * 若加载同样文件名的文件,会被自动重命名 另一种处理方式: # cat bank.csv | sed "s/,/$PA/" > bank.hive # PA=OX001 # load data local inpath '/u01/data/bank.hive' <s>overwrite</s> into table test.bank_data; === 注意 === * order by 中的字段, 必须在 select 中出现 * 子查询表必须有别名 [[分类:Develop]] [[分类:Hadoop]] [[分类:Hive]]
返回
Hive基础
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
目录
文章分类
侧边栏
帮助
工具
链入页面
相关更改
特殊页面
页面信息