我会将数据从旧群集移动到新群集,这些是我采取的步骤:
第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;
第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
我可以注意到描述几乎是一样的。但是当我查询选择数据时,我注意到所有的colones都是在第一个colone上聚集的:
2017-07-01 00:01:43 1notyes101555- | NULL | NULL | NULL | NULL | NULL | NULL
我做错了什么?
答案 0 :(得分:0)
确保您在Hive create table命令中指定的字段分隔符是正确的。您指定了','
row format delimited fields terminated by ','
通过检查数据文件的前几行
来检查实际的字段分隔符hdfs dfs -cat apps/hive/warehouse/d_data09.db/mytab | head