Hive 外部表未从 CSV 源读取整个字符串
Posted
技术标签:
【中文标题】Hive 外部表未从 CSV 源读取整个字符串【英文标题】:Hive external table not reading entirety of string from CSV source 【发布时间】:2015-06-16 20:44:24 【问题描述】:对于 Hadoop 世界来说相对较新,因此很抱歉,如果这是一个明智的选择,但我在 SO 或其他地方没有找到任何关于此的内容。
简而言之,我在 Hive 中创建了一个外部表,它从 HDFS 中的 CSV 文件文件夹中读取数据。问题在于,虽然第一列具有字符串数据类型,但它并未读取包含连字符的值的整个值。
例如:
Hive 表定义:
CREATE EXTERNAL TABLE BG (
`Id` string,
`Someint` int,
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/Path/To/Folder'
TBLPROPERTIES ("skip.header.line.count"="1");
示例数据:
506253-A,10
506254-C,19
506233,8
当我在 Hive 中查询数据或在 HCat 中浏览时,我看到的是这样的:
Id Someint
506253 10
506254 19
506233 8
有什么想法吗?提前致谢!
【问题讨论】:
它对我来说也很好用。我正在 CLI 中查看输出。 【参考方案1】:您使用的是哪个版本的 Hive?在 Amazon EMR 上,Hive 版本 0.13.1 我运行您的代码并获得以下内容
hive> CREATE EXTERNAL TABLE BG (
> `Id` string,
> `Someint` int
> )
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
> LOCATION '/tmp/example'
> TBLPROPERTIES ("skip.header.line.count"="1");
OK
Time taken: 0.598 seconds
hive> select * from BG;
OK
506253-A 10
506254-C 19
506233 8
Time taken: 0.714 seconds, Fetched: 3 row(s)
【讨论】:
你说得对,它工作正常。我的文件夹包含一些数据非常相似的 CSV,再看一遍后,我将结果与错误的源文件进行了比较!感谢您的帮助,并确认这只是我自己的愚蠢行为。【参考方案2】:我已经讨论过从 CSV 文件自动生成 Hive 脚本,它会生成“具有所有字符串数据类型的 CREATE 语句,但您可以根据需要更新 Hive 脚本并更改为适当的类型”,并在下面的 ST 帖子中提供示例,
您可以参考 *** 线程“Hadoop/Hive : Loading data from .csv on a local machine”了解更多详情。
【讨论】:
以上是关于Hive 外部表未从 CSV 源读取整个字符串的主要内容,如果未能解决你的问题,请参考以下文章