【问题标题】:load data to hive from HDFS从 HDFS 加载数据到 hive
【发布时间】: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 中的形式是什么
  • 我敢打赌,文件中有分隔字段的不可打印字符

标签: hadoop hive hiveql


【解决方案1】:

确保您在 Hive 创建表命令中指定的字段分隔符是正确的。你指定了','

row format delimited fields terminated by ','

通过检查数据文件的前几行来检查实际的字段分隔符

hdfs dfs -cat apps/hive/warehouse/d_data09.db/mytab | head

【讨论】:

  • 连普通空格都没有分隔符,字段重叠
猜你喜欢
  • 1970-01-01
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多