嘿,我在我的平面文件数据上创建了一个Hive外部表。

我的平面文件中的数据是这样的:

'abc',3,'xyz'

当我将其加载到Hive表中时,它会以单引号显示结果。
但我希望它是这样的:

abc,3,xyz

有什么办法吗?

最佳答案

我可以想到两种获得预期结果的方法。

  • 使用配置单元中可用的现有String函数-SUBSTR和LENGTH。



  • 广义查询
     select SUBSTR(col1,2,length(col1)-2) , SUBSTR(col2,2,length(col2)-2) ,  SUBSTR(col3,2,length(col3)-2)
    


  • 编写您自己的UDF来砍切每个字符串的第一个和最后一个字母。

  • 如何转换百万行?
    假设您有一个包含3列和1百万条记录的表(名为“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/

    10-12 19:40