锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn/#/introductionPage。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题:
1.Hive导出数据的五种方式?
1. Insert方式,查询结果导出到本地或HDFS
Insert overwrite local directory ‘/root/insert/student’ select id,name from student;
Insert overwrite directory ‘/user/ insert /student’ select id,name from student;
2. Hadoop命令导出本地
hive>dfs -get /user/hive/warehouse/student/ 000000_0 /root/hadoop/student.txt
3. hive Shell命令导出
]$ bin/hive -e ‘select id,name from student;’ > /root/hadoop/student.txt
4. Export导出到HDFS
hive> export table student to ‘/user/export/student’;
1.Sqoop导出
2.Hive是怎样保存元数据的?
保存元数据的方式有:内存数据库rerdy,本地mysql数据库,远程mysql数据库,但是本地的mysql数据用的比较多,因为本地读写速度都比较快
内存数据库derby,安装小,但是数据存在内存,不稳定
mysql数据库,数据存储模式可以自己设置,持久化好,查看方便。
3.说说对Hive桶表的理解?
桶表是对数据进行哈希取值,然后放到不同文件中存储。
数据加载到桶表时,会对字段取hash值,然后与桶的数量取模。把数据放到对应的文件中。物理上,每个桶就是表(或分区)目录里的一个文件,一个作业产生的桶(输出文件)和reduce任务个数相同。
桶表专门用于抽样查询,是很专业性的,不是日常用来存储数据的表,需要抽样查询时,才创建和使用桶表。
4.什么是 metastore?
metadata 即元数据。包含 database、tabel、column names、partitions 信息、bucketing 信息等的元数据信息。元数据默认是存储在 Derby 中,建议存储在关系型数据库中。
5.Hive如何动态分区?
与分区有关的有两种类型的分区:静态和动态。在静态分区中,您将在加载数据时(显式)指定分区列。
而在动态分区中,您将数据推送到 Hive,然后 Hive 决定哪个值应进入哪个分区。要启用动态分区,请设置下面的属性:hive.exec.dynamic.parition.mode=nonstrict;
insert overwrite table emp_details_partitioned partition(location)
select * from emp_details;
6.如何创建 bucket 表?
默认情况下,在 Hive 中禁用分桶功能,可以通过设置下面的属性强制启用分桶功能:
hive.enforce.bucketing=true;