Spark RDD в Dataframe - PullRequest
       19

Spark RDD в Dataframe

0 голосов
/ 03 апреля 2019

Ниже приведены данные в файле

PREFIX|Description|Destination|Num_Type
1|C1|IDD|NA
7|C2|IDDD|NA
20|C3|IDDD|NA
27|C3|IDDD|NA
30|C5|IDDD|NA

Я пытаюсь прочитать их и преобразовать в Dataframe.

val file=sc.textFile("/user/cloudera-scm/file.csv")
val list=file.collect.toList
list.toDF.show

+--------------------+
|               value|
+--------------------+
|PREFIX|Descriptio...|
|         1|C1|IDD|NA|
|        7|C2|IDDD|NA|
|       20|C3|IDDD|NA|
|       27|C3|IDDD|NA|
|       30|C5|IDDD|NA|
+--------------------+

Я не могу преобразовать это в datafram с точнымФорма стола

1 Ответ

1 голос
/ 03 апреля 2019

Давайте сначала рассмотрим ваш код.

// reading a potentially big file
val file=sc.textFile("/user/cloudera-scm/file.csv")
// collecting everything to the driver
val list=file.collect.toList
// converting a local list to a dataframe (this does not work)
list.toDF.show

Есть способы заставить ваш код работать, но сама логика неловкая. Вы читаете данные с исполнителями, помещая все это в драйвер, чтобы просто преобразовать их в массив данных (обратно к исполнителям). Это большая сетевая связь, и драйвер, скорее всего, исчерпает память для любого достаточно большого набора данных.

Что вы можете сделать, это читать данные непосредственно как фрейм данных, как это (драйвер ничего не делает и нет ненужного ввода-вывода):

spark.read
    .option("sep", "|") // specify the delimiter
    .option("header", true) // to tell spark that there is a header
    .option("inferSchema", true) // optional, infer the types of the columns
    .csv(".../data.csv").show
+------+-----------+-----------+--------+
|PREFIX|Description|Destination|Num_Type|
+------+-----------+-----------+--------+
|     1|         C1|        IDD|      NA|
|     7|         C2|       IDDD|      NA|
|    20|         C3|       IDDD|      NA|
|    27|         C3|       IDDD|      NA|
|    30|         C5|       IDDD|      NA|
+------+-----------+-----------+--------+

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