我将数据从旧集群移到新集群,这些是我采取的步骤:

步骤1:

我通过distcp将数据从HDFS 1(旧的)移到HDFS 2(新的):

hadoop distcp hdfs://nn1:8020/apps/hive/warehouse/d_data09.db/mytab hdfs://nn2:8020/apps/hive/warehouse/d_data09.db/mytab

第2步:

现在,我拥有有关新集群的数据,并且必须将其放在HIVE上,因此:

第一次,我已经连接到beeline并创建了一个数据库:
beeline -u "jdbc:hive2://nn01:2181,nn03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2"

Create database d_data09;

第三步:
create external table mytab (
col2 string,
col1 string,
col3 string,
col4 string,
col5 string,
col6 string
)
row format delimited fields terminated by ','
location 'apps/hive/warehouse/d_data09.db/mytab';

这是表的构造函数:
2017-07-01 00:01:43 |1  |not   |yes   |101   |555   |-

结果:

我可以说表Mytab是成功创建的,我可以看到totalSize是26Go,这意味着数据已成功删除(我没有加载数据,但我只是使用了外部数据)。

当我键入:Describe formatted elements时,我可以注意到描述几乎相同。但是当我查询选择数据时,我注意到所有的冒号都聚集在第一个冒号上:
 2017-07-01 00:01:43 1notyes101555- | NULL  | NULL   | NULL    | NULL   | NULL   | NULL

我做错了什么?

最佳答案

确保在Hive create table命令中指定的字段定界符正确。您指定了“,”

row format delimited fields terminated by ','

通过检查数据文件的前几行来检查实际的字段定界符
hdfs dfs -cat apps/hive/warehouse/d_data09.db/mytab | head

关于hadoop - 从HDFS加载数据到配置单元,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49108373/

10-10 17:17
查看更多