Pyspark:如何在输入文件中转义反斜杠(\)

时间:2020-09-11 23:48:06

标签: python pyspark

我正在使用pyspark将csv文件加载到postgresql中。我在输入文件中有一条记录,如下所示-

 var $dropdown1;
 var $dropdown2;
$(document).ready(function(){

        $('select').selectpicker();
        $dropdown1 = $("select[name='dropdown1']");
        $dropdown2 = $("select[name='dropdown2']");
        $dropdown1.on("change",function () {

        $dropdown2.find("option").remove();
        $dropdown2.append($dropdown1.find('option').clone());
        var selectedItem = $(this).val();
        if (selectedItem) {
            $dropdown2.find('option[value="' + selectedItem + '"]').remove();
        }
      $dropdown2.selectpicker('refresh');

        });


});

当我将其加载到postgresql数据库中时,它将像这样被加载,这是不正确的-

Id,dept,city,name,country,state
1234,ABC,dallas,markhenry\,USA,texas

postgresdb中的正确输出应为-

Id   | dept| city   | name          | country | state
1234 | ABC | dallas | markhenry,USA | texas   | null

我正在读取如下文件-

Id   | dept| city   | name          | country | state
1234 | ABC | dallas | markhenry     |   USA   | texas

有没有一种方法可以修改代码以处理数据中出现的反斜杠()。预先感谢

1 个答案:

答案 0 :(得分:1)

“ quote”选项的目的是指定一个引号字符,该字符包装整个列值。不知道这里是否需要这样做,但是您可以使用regexp_replace函数删除特定字符(只需按原样选择其他所有内容,然后以这种方式修改name列)。

from pyspark.sql.functions import *
df = spark.read.option("inferSchema", "true").option("header", "true").csv(filepath)
df2 = df.select(col("Id"), col("dept"), col("city"), regexp_replace(col("name"), "\\\\", "").alias("name"), col("country"), col("state"))
df2.show(4, False)

输出:

+----+----+------+---------+-------+-----+
|Id  |dept|city  |name     |country|state|
+----+----+------+---------+-------+-----+
|1234|ABC |dallas|markhenry|USA    |texas|
+----+----+------+---------+-------+-----+