有没有办法以编程方式从 .csv 设置数据集的架构
Is there a way to programmatically set a dataset's schema from a .csv
例如,我有一个 .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
]
有没有办法以 programmatic/automated 方式设置数据集的架构?
从这个例子开始:
Dataset<Row> dataset = files
.sparkSession()
.read()
.option("inferSchema", "true")
.csv(csvDataset);
output.getDataFrameWriter(dataset).write();
添加 header
、quote
和 escape
选项,如下所示:
Dataset<Row> dataset = files
.sparkSession()
.read()
.option("inferSchema", "true")
.option("header", "true")
.option("quote", "\"")
.option("escape", "\"")
.csv(csvDataset);
output.getDataFrameWriter(dataset).write();
虽然您可以在代码中执行此操作,但代工厂 dataset-app 也可以在本地执行此操作。这意味着您可以跳过编写代码(这很好),但也意味着您可以在管道中节省一个步骤(这可能会节省您的运行时间。)
将文件上传到数据集后,在数据集上按“编辑架构”:
然后应用如下设置,这将在您的案例中产生预期的结果:
然后按“保存并验证”,数据集应该以正确的模式结束:
例如,我有一个 .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
]
有没有办法以 programmatic/automated 方式设置数据集的架构?
从这个例子开始:
Dataset<Row> dataset = files
.sparkSession()
.read()
.option("inferSchema", "true")
.csv(csvDataset);
output.getDataFrameWriter(dataset).write();
添加 header
、quote
和 escape
选项,如下所示:
Dataset<Row> dataset = files
.sparkSession()
.read()
.option("inferSchema", "true")
.option("header", "true")
.option("quote", "\"")
.option("escape", "\"")
.csv(csvDataset);
output.getDataFrameWriter(dataset).write();
虽然您可以在代码中执行此操作,但代工厂 dataset-app 也可以在本地执行此操作。这意味着您可以跳过编写代码(这很好),但也意味着您可以在管道中节省一个步骤(这可能会节省您的运行时间。)
将文件上传到数据集后,在数据集上按“编辑架构”:
然后应用如下设置,这将在您的案例中产生预期的结果:
然后按“保存并验证”,数据集应该以正确的模式结束: