我是Hive的新手,最近我接受了一次采访,被问到以下问题。有人可以帮助您找到正确的答案。
答案 0 :(得分:1)
为以下问题添加答案和相关解释:
1)您要从哪一列中查询数据丢失? 如果从分区列中丢失了数据,则不会生效。如果您觉得查询的输出不正确,可以对表进行msck修复。 请让我知道分区列中是否缺少数据。
2)这取决于日志文件的位置和位置。 如果日志文件在任何RDBMS服务器中都采用表格形式,则可以对其进行压缩。 如果日志文件在某些ftp服务器中,则可以执行ftp / sftp / ssh。 如果日志文件在另一个群集中,则可以使用distcp。
3)是的,您可以蹲下。 但是,如果直接运行sqoop import命令,则可能会遇到问题。 在进行sqoop导入时,您需要提供的参数很少,这些参数是 --null-non-string'\ n'&--null-string'\ n'->这些用于导入 --input-null-non-string'\ n'&--input-null-string'\ n'->这些用于导出 这些将指定sqoop命令和生成的null的java程序,并由执行导入/导出的java程序标识。
4)这些是员工ID,位置,工资,部门的可用列
employeeId -> For bucketing
Location -> For partitioning
Salary -> Better not add for bucketing or partitioning (for example if there are )
原因::: 如果有10名员工,并且10名员工中只有6名拥有不同的薪水。 如果应用分区,则将有6个不同的目录。 如果您对2个存储分区应用存储分区,则数据将根据值进行划分。 这仅用于数据样本。想象一下,如果有大量数据。您将有多个目录,并且没有文件。因此最好不要对此应用任何内容。
department -> for partitioning
答案 1 :(得分:0)
添加第四个问题的要点,避免在“工资”列上进行分区/存储的原因是因为我们可以像Empid一样为薪水创建存储桶,但这意义不大。因为扫描EmpId会带来更好的性能,而不是薪水,因为它具有测量值。