加载到 Hive 时从平面文件中删除单引号
Removing single quotes from a flat file when loading to Hive
嘿,我正在为我的平面文件数据创建外部 Hive table。
我的平面文件中的数据是这样的:
'abc',3,'xyz'
当我将它加载到 Hive 中时 table 它用单引号显示结果。
但我希望它是这样的:
abc,3,xyz
有什么办法吗?
我可以想到两种方法来获得想要的结果。
- 使用配置单元中可用的现有字符串函数 - 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 以截断每个字符串的第一个和最后一个字母。
如何转换百万行?
假设您有一个 table(名为 "staging"),其中包含 3 列和 100 万条记录。
如果您 运行 下面的查询,您将得到新的 table "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
一旦上述查询完成,您将在 "final" table
中得到您想要的结果
嘿,我正在为我的平面文件数据创建外部 Hive table。
我的平面文件中的数据是这样的:
'abc',3,'xyz'
当我将它加载到 Hive 中时 table 它用单引号显示结果。 但我希望它是这样的:
abc,3,xyz
有什么办法吗?
我可以想到两种方法来获得想要的结果。
- 使用配置单元中可用的现有字符串函数 - 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 以截断每个字符串的第一个和最后一个字母。
如何转换百万行? 假设您有一个 table(名为 "staging"),其中包含 3 列和 100 万条记录。 如果您 运行 下面的查询,您将得到新的 table "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
一旦上述查询完成,您将在 "final" table
中得到您想要的结果