csv - 加载到 Hive 时从平面文件中删除单引号

标签 csv hadoop hive bigdata flat-file

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

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

'abc',3,'xyz'

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

abc,3,xyz

有什么办法吗?

最佳答案

我可以想到两种方法来获得所需的结果。

  1. 使用 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"

  1. 编写您自己的 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/

相关文章:

python - 如何从 csv 文件中删除多个重复的行范围?

apache-spark - 如何在没有 hive-site.xml 的情况下将 Spark SQL 连接到远程 Hive Metastore(通过节俭协议(protocol))?

scala - "User did not initialize spark context"在 SPARK YARN 集群模式下使用 Scala 代码时出错

hadoop - Apache Hbase的 future 是什么

json - 执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。 com/mongodb/util/JSON

hadoop - 按一种组合进行分组,然后再对其他项进行分组

csv - 通过过滤合并CSV文件

python - 在django模型中插入CSV数据,空值

java - 通过提取列值修改并生成新的csv文件

hadoop - 在运算符之外使用 Airflow 宏