【问题标题】:how to replace new line characters while selecting from HIVE table从 HIVE 表中选择时如何替换换行符
【发布时间】:2019-05-26 15:59:47
【问题描述】:

我在 HIVE 中有一个 AVRO 格式表。该表中的一列(字符串数据类型)包含带有换行符的数据,所以当我选择(使用beeline或pyspark)时,我得到了多行。我确实在我的选择中尝试了 REGEXP_REPLACE(col1,"\n","") 选项,但它仍然返回多行。

当我在文本编辑器中复制和粘贴时 col1 的值如下所示:

NY - Enjoy holidays or Enjoy leaves.  
Silver 2000 plan
Silver 2000 plan CSR 1
Silver 2000 plan CSR 2
Gold 600 plan
Enjoy, holidays then leaves for ER, UC and old age only.  Primary holidays not subject to Enjoy.

这里有什么替代方案?

【问题讨论】:

  • col1的值是多少
  • 提供了原帖中的值

标签: hive pyspark-sql


【解决方案1】:

它用 regexp_replace(regexp_replace(col1,'\r',''),'\n','') 解决

【讨论】:

    【解决方案2】:

    试试这个

    regexp_replace(col1, '\\\\n', "")

    示例

    hive> select * from temp.test4;
    OK
    1   abc\nxyz
    Time taken: 0.169 seconds, Fetched: 1 row(s)
    hive> select id, regexp_replace(value, '\\\\n', "") from temp.test4;
    OK
    1   abcxyz
    

    【讨论】:

    • 我没有正确获得输出。我试过直线,换行符没有被正确替换。我在 pyspark 中尝试过,那里的值返回为 null
    • 表中的值如何?是我代表的方式吗?
    • 没有。从视觉上看,我在数据中看不到 \n 。但是当我复制数据并将其粘贴到文本编辑器中时,它会以多行显示。
    • 事实上,在 pyspark 中,它正在打印最后一行“享受,假期然后只去 ER、UC 和老年。主要假期不受享受。”使用 regexp_replace(col1,'\\n','')
    • 实际上是数据中的回车,用regexp_replace(regexp_replace(col1,'\\r',''),'\\n','')解析
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2021-09-26
    • 2015-07-25
    • 2016-06-06
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    相关资源
    最近更新 更多