主要特性:
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:表(Table),外部表(External Table),分区(Partition),桶(Bucket)。
在Hive中创建表时,默认情况下Hive负责管理数据。这意味着Hive把数据移入到它的“仓库目录”(托管表)。另外一种选择是创建一个“外部表”(external table)。这会让Hive到仓库目录以外的位置去访问数据。
在删除托管表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的。
hive为每个数据库创建一个路径,表在被存储在相应的子路径中。默认的“default”的数据库没有自己的路径;数据库的路径这个属性中设置:hive.metastore.warehouse.dir,其中默认的属性值是 /user/hive/warehouse。
经典习题:
hive 为每个数据库创建一个路径,每个表对应一个文件夹,表被存储在相应的子路径中。(对)
默认的"default"的数据库没有自己的路径。(对)
托管表会将数据移入 Hive 的 warehouse 目录;外部表则不会。( 对)
数据库的路径这个属性中设置:hive.metastore.warehouse.dir,其中默认的属性值是/user/hive/ (错)
如果设置环境变量$PATH=$HIVE_HOME\bin 即可直接使用 hive 命令 (对)
Sqoop 可以在 HDFS/Hive 和关系型数据库之间进行数据的导入导出,其中主要使用了 import 和 export 这两个工具。(对 )
\001 是 hive 默认的分割符?(对)
Hive 在导入数据的时候,被导入数据是以该分割符划分的,否则导入后为null,缺省都列为 null。(对)
external 类型的表,表对应的是文件夹,对于文件的位置不做任何限制,放到任何 hdfs 上到底位置都可以 (对)
增加分区必须在创建表的时候就指定了分区列才可以,后期不能增加分区列, 只能增加分区字段的值 (对)
hive 命令行中,执行一次查询的命令是(A )。
A . -e
B . -f
C . -S
D . -V
hive-0.20.0/conf 目录下的 hive-default.xml.template 文件,如果修改其中内容是否有效 ? C
A有效 B视情况而定 C没有 D没有方法读取,但是可以修改成写入。
如果在环境变量中配置了 hive,进入 hive shell 的命令是 C
A. hive
B ./hive
C.在任意目录下执行:hive shell
D.必须在指定目录下执行:hive shell 命令
在 hive 中,实现修改表结构字段的关键字是 C
A.modify
B.alert
C.alter
D.update
把本地数据文件”source.txt”导入 hive 中的命令是 C
A.load data '/source.txt' overwrite into table student
B.load inpath '/source.txt' overwrite into table student
C.load data local inpath '/source.txt' overwrite into table student
D.load data inpath '/source.txt' overwrite into table student
如果想从 hive shell 命令中退出命令环境,需要执行的命令是 C
A.out B.quit C.exit D.away
Hive 查询语言和 SQL 语言,两个不同之处在于操作(C D)
A. Group By B.Join C. Partition D. Bucket
安装 Hive 所需的环境是 AB
A.hadoop B.JDK C.Hbase D.sqoop
hive 中表导入数据的方式,不推荐的是( D)。
A . load加载数据 B . hadoop fs –put数据到指定表目录下
C . select +insert导入数据 D . 大批次insert values
关于涉及当前状态跟之前状态相关的问题,hive 中的套路是(B )。
A . row number() B . 自join
C . 多分组查询 D . 嵌套select查询