如何在 dsx ml 管道中处理带有非标准分隔符的输入文件?

How to handle input file with non standard delimiters in dsx ml pipeline?

我正在尝试使用没有 header 且字段分隔符为 :: 的数据集:

! wget --quiet http://files.grouplens.org/datasets/movielens/ml-1m.zip
! unzip ml-1m.zip
! mv ml-1m/ratings.dat .
! head ratings.dat

输出:

1::1193::5::978300760
1::661::3::978302109
1::914::3::978301968

我已将文件加载到我的 dsx 管道中,但我不清楚如何让 dsx 使用 :: 分隔符拆分此文件。

更新:

我尝试使用的 ml 管道功能可以从下面的屏幕截图中看到:

我添加了一个数据集,但不知道如何让 dsx 识别字段分隔符:

截至 2017 年 2 月...

当您创建新管道和 select 数据集时,我相信 DSX 使用 Spark DataFrameReader 加载您 select 的文件。 DataFrameReader 默认使用单个 , 作为分隔符。 DSX 不提供更改 UI.

中默认分隔符的方法

我认为预处理数据是您的最佳选择。您可以在笔记本中执行此操作。请注意,Spark DataFrameReader 仅支持单个字符分隔符,因此您不能将其用于此特定数据集。但是,您可以使用 pandas。

import pandas as pd

pdf = pd.read_csv('ml-1m/ratings.dat', sep='::', 
              header=None, 
              names=['UserID','MovieID','Rating','Timestamp'], 
              engine='python')

pdf.to_csv('ratings.csv', index=False)

!head ratings.csv
UserID,MovieID,Rating,Timestamp
1,1193,5,978300760
1,661,3,978302109
1,914,3,978301968
1,3408,4,978300275
1,2355,5,978824291
1,1197,3,978302268
1,1287,5,978302039
1,2804,5,978300719
1,594,4,978302268

现在数据将采用 DSX 能够正确解析的格式。