嘿,我正在为我的平面文件数据创建一个 Hive 外部表。
我的平面文件中的数据是这样的:
'abc',3,'xyz'
当我将它加载到 Hive 表中时,它会用单引号显示结果。 但我希望它是这样的:
abc,3,xyz
有什么办法吗?
最佳答案
我可以想到两种方法来获得所需的结果。
- 使用 hive 中可用的现有字符串函数 - SUBSTR 和 LENGTH。
select SUBSTR("\'abc\'",2,length("\'abc\'")-2) , SUBSTR("\'3\'",2,length("\'3\'")-2) , SUBSTR("\'xyz\'",2,length("\'xyz\'")-2)
通用查询
select SUBSTR(col1,2,length(col1)-2) , SUBSTR(col2,2,length(col2)-2) , SUBSTR(col3,2,length(col3)-2)
NOTE: Hive SUBSTR method expect string index to start from "1" not "0"
- 编写您自己的 UDF 以截断每个字符串的第一个和最后一个字母。
如何转换百万行? 假设您有一个包含 3 列和 100 万条记录的表(名为“staging”)。 如果您运行以下查询,您将拥有新表“final”,该表的开头或结尾将没有任何单引号。
INSERT INTO final SELECT SUBSTR(col1,2,length(col1)-2) , SUBSTR(col2,2,length(col2)-2) , SUBSTR(col3,2,length(col3)-2) from staging
一旦上述查询完成,您将在“最终”表中获得所需的结果
关于csv - 加载到 Hive 时从平面文件中删除单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32521124/