Столбцы CSV удалены из файла при загрузке Dataframe - PullRequest
0 голосов
/ 31 января 2019

При загрузке csv через блоки данных, ниже 2-го ряда 4-й столбец не загружается.Количество столбцов в csv варьируется в зависимости от строки.

В test_01.csv,

a,b,c
s,d,a,d
f,s

Загружается в файл csv через блоки данных, как показано ниже

>>> df2 = sqlContext.read.format("com.databricks.spark.csv").load("sample_files/test_01.csv")
>>> df2.show()
+---+---+----+
| C0| C1|  C2|
+---+---+----+
|  a|  b|   c|
|  s|  d|   a|
|  f|  s|null|
+---+---+----+
  1. Пробовалзагрузка с текстовым файлом

rdd = sc.textFile ("sample_files / test_01.csv")

rdd.collect ()

[u'a,b,c', u's,d,a,d', u'f,s']

Но не преобразование вышеупомянутого rdd в dataframe вызывает ошибку

удалось решить, указав схему, как показано ниже.

df2 = sqlContext.read.format ("com.databricks.spark.csv"). Схема (схема) .load ("sample_files / test_01.csv"")

df2.show ()

+---+---+----+----+----+
| e1| e2|  e3|  e4|  e5|
+---+---+----+----+----+
|  a|  b|   c|null|null|
|  s|  d|   a|   d|null|
|  f|  s|null|null|null|
+---+---+----+----+----+
Пробовал с инфершемой.все еще не работает

df2 = sqlContext.read.format ("com.databricks.spark.csv"). option ("inferSchema", "true").load ("sample_files / test_01.csv")

df2.show ()

+---+---+----+
| C0| C1|  C2|
+---+---+----+
|  a|  b|   c|
|  s|  d|   a|
|  f|  s|null|
+---+---+----+

Но есть ли другой способ без использования схемы какномер столбца меняется?

1 Ответ

0 голосов
/ 31 января 2019

Убедитесь, что у вас фиксированные заголовки, то есть в строках могут отсутствовать данные, но имена столбцов должны быть фиксированными.

Если вы не укажете имена столбцов, вы все равно можете создать схему во время чтения csv:

val schema = new StructType()
    .add(StructField("keyname", StringType, true))
...