对于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
有什么想法吗?提前谢谢!
答案 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主题。了解更多详情。