从HDFS加载数据到配置单元

时间:2018-03-05 10:32:13

标签: hadoop hive hiveql

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

第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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

确保您在Hive create table命令中指定的字段分隔符是正确的。您指定了','

row format delimited fields terminated by ','

通过检查数据文件的前几行

来检查实际的字段分隔符
hdfs dfs -cat apps/hive/warehouse/d_data09.db/mytab | head