【发布时间】:2018-03-05 21:34:31
【问题描述】:
我会将我的数据从旧集群移动到新集群,这些是我采取的步骤:
第 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
第二步:
现在我的数据在新集群上,我必须把它放在 HIVE 上,所以:
第一次,我连接到 beeline 并创建了一个数据库:
beeline -u "jdbc:hive2://nn01:2181,nn03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2"
Create database d_data09;
第 3 步:
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,这意味着数据是 EXTERNATED(我没有加载数据,但我只是使用了外部数据)成功.
当我输入:Describe formatted elements 时,我注意到描述几乎没有相同之处。但是当我查询选择数据时,我注意到所有的冒号都聚集在第一个冒号:
2017-07-01 00:01:43 1notyes101555- | NULL | NULL | NULL | NULL | NULL | NULL
我做错了什么?
【问题讨论】:
-
您能否将文件的前几行包含在内?
hdfs dfs -cat apps/hive/warehouse/d_data09.db/mytab | head -
您说的是
row format delimited fields terminated by ',',但您的数据似乎由不同的字段分隔 -
@bpgergo mytab 是一个包含数百万个文件的目录
-
这似乎是问题,但我不知道这些文件在 .../mytab 中的形式是什么
-
我敢打赌,文件中有分隔字段的不可打印字符