Hive数据倾斜
key分布不均匀 业务数据本身的特性 SQL语句造成数据倾斜 解决方法 hive设置hive.map.aggr=true和hive.groupby.skewindata=true 还有其他解决方案
Hive内部表和外部表的区别
Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。 在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。
hive的元数据和存储引擎
hive的元数据存储着通过hive所建的库和表的结构信息, 以及所对应的hdfs上的文件夹 hive可以使用mysql作为存储引擎,也可以使用其他数据库
Hive的特点以及和关系型数据库的区别
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
hive导入数据的几种方式
从本地导入: load data local inpath ‘/home/1.txt’ (overwrite)into table student; 从Hdfs导入: load data inpath ‘/user/hive/warehouse/1.txt’ (overwrite)into table student; 查询导入: create table student1 as select * from student;(也可以具体查询某项数据) 查询结果导入:insert (overwrite)into table staff select * from track_log;
hive导出数据的几种方式
用insert overwrite导出方式 导出到本地: insert overwrite local directory ‘/home/robot/1/2’ rom format delimited fields terminated by ‘\t’ select * from staff;(递归创建目录) 导出到HDFS insert overwrite directory ‘/user/hive/1/2’ rom format delimited fields terminated by ‘\t’ select * from staff; Bash shell覆盖追加导出 例如:$ bin/hive -e “select * from staff;” > /home/z/backup.log Sqoop把hive数据导出到外部
分区和分桶
hive优化
Hive中的排序关键字有哪些
sort by ,order by ,cluster by ,distribute by sort by :不是全局排序,其在数据进入reducer前完成排序 order by :会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序).只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。 cluster by : 当distribute by 和sort by的字段相同时,等同于cluster by.可以看做特殊的distribute + sort distribute by :按照指定的字段对数据进行划分输出到不同的reduce中