Hive外部表格未从CSV源

时间:2015-06-16 20:44:24

标签: csv hadoop hive hiveql

对于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

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

2 个答案:

答案 0 :(得分:1)

您使用的是什么版本的Hive?在Amazon EMR上,Hive版本0.13.1我运行您的代码并获得以下

    function str_str {
      local str
      str="${1#*${2}}"
      str="${str%%$3*}"
      echo -n "$str"
    }

    # test it ...
    mystr="this is a string"
    str_str "$mystr" "this " " string"

答案 1 :(得分:0)

我已经讨论过从CSV文件自动生成Hive脚本,它会生成"创建包含所有String数据类型的语句,但您可以根据需要更新Hive脚本并更改为正确的类型"以下ST帖子的例子,

您可以在" Hadoop/Hive : Loading data from .csv on a local machine"上参考Stackoverflow主题。了解更多详情。