与sqoop-import相关的查询?

问题描述 投票:1回答:3

场景:

我已将数据从SQl Server导入HDFS。存储在HDFS目录中的多个文件中的数据如下:

部分-M-00000 部分-M-00001 部分-M-00002 部分-M-00003

题:

我的问题是,当从HDFS目录中读取这些存储的数据时,我们必须读取所有文件(part-m-00000,01,02,03)或只读取part-m-00000。因为当我读取数据时,我发现HDFS中的数据有点缺失。那么,它是否会发生或者我错过了什么?

hadoop sqoop
3个回答
2
投票

您需要读取所有文件,而不仅仅是00000.有多个文件的原因是sqoop以map-reduce方式工作,将“导入”工作分成多个部分。每个部分的输出都放在一个单独的文件中。

RL


1
投票

Sqoop正在运行没有reducers的导入。因此,没有合并由mappers处理的部分文件。您将看到部分文件取决于您在sqoop命令中设置的映射器数量为--m4--num-4.So如果你提供sqoop import --connect jdbc:mysql://localhost/db --username <>--table <>--m1然后它将只创建一个部分文件。


0
投票

如果结果大小很大,那么Hive会将结果存储在块中。如果要使用CLI读取所有文件,请执行以下命令。

$ sudo cat part-m-*

它将为您提供最终结果,而不会丢失任何部分。

© www.soinside.com 2019 - 2024. All rights reserved.