我已经成功地将250000记录CSV文件加载到HDFS中,并且我已经在其上执行了一些ETL功能,例如删除0-9,az和AZ以外的字符串中的任何字符,这样它就很干净了。
我已将此ETL的输出保存到HDFS以加载到Hive中。在Hive中,我为表创建了模式,并为每列设置了适当的数据类型。
create external table pigOutputHive (
id string,
Score int,
ViewCount int,
OwnerUserId string,
Body string,
Rank int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
location '/user/admin/PigOutputETL';
当我对数据运行简单查询时,例如:
SELECT * FROM pigoutputhive LIMIT 100000;
数据看起来应该是这样,当我将其下载到本地计算机并在Excel中以CSV格式查看时,它看起来也很不错。
当我尝试在同一个表上运行以下查询时,即使对于字符串列,我也会将每个字段作为整数返回。请参见下面的屏幕截图。
谁能看到我哪里出错了?在最初的250000行中,特定字段中有一些空格,例如OwnerUserId,我是否需要告诉Pig或Hive如何处理这些?