Чтение CSV-файла с переменным числом запятых в качестве фрейма данных в PYSPARK - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть файл, разделенный запятыми, без заголовка, с различным количеством элементов в каждой строке, разделенных запятой, например:

a, x1, x2  
b, x3, x4, x5  
c, x6, x7, x8, x9  

Первая строка содержит только 3 элемента, последующие строки содержатболее того, кажется, что число столбцов выводится только из первой строки, поэтому оно пропускает все, что после 3-й запятой в других строках, и данные теряются.

spark = init_spark()
df= spark.read.csv(filename)
print (df.take(3))

Я получаю:

[Row(_c0='a', _c1=' x1', _c2=' x2'),  
Row(_c0='b', _c1=' x3', _c2=' x4'),   
Row(_c0='c', _c1=' x6', _c2=' x7')]  

mode = "PERMISSIVE" в модуле pyspark.sql.readwriter
не решает проблему, возможно, потому что нетзаголовок

1 Ответ

0 голосов
/ 26 февраля 2019

Предполагается, что не известно максимальное количество значений в виде двоеточия или запятой

schema = StructType([
    StructField("col_a", StringType(), True),
    StructField("col_b", StringType(), True),
    StructField("col_c", StringType(), True),
    StructField("col_d", StringType(), True),
    StructField("col_e", StringType(), True)
])

df = spark.read.csv("a.csv",header=False,schema=schema)

df.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...