0

例如,我有一个.csv使用 Excel 方言的方法,它使用 Python 的 csv 模块之类的东西doubleQuote来转义引号。

例如,考虑下面的行:

"XX ""YYYYYYYY"", ZZZZZZ ""QQQQQQ""","JJJJ ""MMMM"", RRRR ""TTTT""",1234,RRRR,60,50

我希望架构变成:

 [
   'XX "YYYYYYYY", ZZZZZZ "QQQQQQ"',
   'JJJJ "MMMM", RRRR "TTTT"',
   1234,
   'RRRR',
   60,
   50
 ]

有没有办法以编程/自动化方式设置数据集的模式?

4

2 回答 2

3

虽然您可以在代码中执行此操作,但 foundrys dataset-app 也可以在本机执行此操作。这意味着您可以跳过编写代码(这很好),但也意味着您可以在管道中保存一个步骤(这可能会在运行时节省您的时间。)

将文件上传到数据集后,在数据集上按“编辑模式”: 编辑架构按钮

然后应用如下设置,这将在您的情况下产生所需的结果:

模式编辑器

然后按“保存并验证”,数据集应该以正确的模式结束:

最终数据集

于 2020-10-12T11:37:03.777 回答
1

从这个例子开始:

Dataset<Row> dataset = files
        .sparkSession()
        .read()
        .option("inferSchema", "true")
        .csv(csvDataset);

output.getDataFrameWriter(dataset).write();

添加headerquoteescape选项,如下所示:

Dataset<Row> dataset = files
        .sparkSession()
        .read()
        .option("inferSchema", "true")
        .option("header", "true")
        .option("quote", "\"")
        .option("escape", "\"")
        .csv(csvDataset);

output.getDataFrameWriter(dataset).write();  
于 2020-09-25T15:23:22.997 回答