配置单元外部表未从csv源读取整个字符串

flvlnr44  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(313)

相对新的hadoop世界,所以道歉,如果这是一个不需要大脑,但我还没有找到任何关于这一点上,所以或其他地方。
简而言之,我在hive中创建了一个外部表,它从hdfs中的csv文件文件夹中读取数据。问题是,虽然第一列具有string数据类型,但它并没有读取包含连字符的值的整个值。
例如:
配置单元表定义:

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

有什么想法吗?提前谢谢!

wf82jlnq

wf82jlnq1#

你用的是什么版本的Hive?在amazonemr的hiveversion0.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)
vof42yt1

vof42yt12#

我已经讨论过如何从csv文件自动生成配置单元脚本,它会生成“使用所有字符串数据类型创建语句,但您可以根据需要更新配置单元脚本并更改为正确的类型”,下面的文章中有一些示例,
有关详细信息,请参阅“hadoop/hive:loading data from.csv on a local machine”(hadoop/hive:从本地计算机上的.csv加载数据)中的stackoverflow线程。

相关问题