Как Spark может читать текстовый файл с разделителями трубы, который не имеет расширения - PullRequest
1 голос
/ 18 апреля 2020

У меня есть текстовый файл с разделителями трубы, который не имеет расширения. Проверка содержимого файла

$ head -4 data/books/books
0|3-88623-803-7|GARDENING|2003-11-07|Editora FTD|174.99
1|5-72448-672-4|TECHNOLOGY-ENGINEERING|2012-08-08|Wolters Kluwer|140.99
2|7-64433-458-3|SOCIAL-SCIENCE|2015-11-14|Bungeishunju|7.99
3|1-18243-251-3|MATHEMATICS|1997-02-22|Hachette Livre|34.99

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

val spark = SparkSession.builder().master("local[4]").appName("myApp").getOrCreate()

val data = spark.read.option("delimiter", "|")
  .option("header", "false")
  .option("inferSchema", "false").textFile("data/books/books")
data.show()
data.printSchema()


+--------------------+
|               value|
+--------------------+
|0|3-88623-803-7|G...|
|1|5-72448-672-4|T...|
|2|7-64433-458-3|S...|
|3|1-18243-251-3|M...|

root
|-- value: string (nullable = true)

1 Ответ

1 голос
/ 18 апреля 2020

Вместо .textFile используйте .csv.


Using .csv:

spark.read.option("delimiter","|").option("header","false").csv("books").show()
//+---+-------------+--------------------+----------+--------------+------+
//|_c0|          _c1|                 _c2|       _c3|           _c4|   _c5|
//+---+-------------+--------------------+----------+--------------+------+
//|  0|3-88623-803-7|           GARDENING|2003-11-07|   Editora FTD|174.99|
//|  1|5-72448-672-4|TECHNOLOGY-ENGINE...|2012-08-08|Wolters Kluwer|140.99|
//|  2|7-64433-458-3|      SOCIAL-SCIENCE|2015-11-14|  Bungeishunju|  7.99|
//|  3|1-18243-251-3|         MATHEMATICS|1997-02-22|Hachette Livre| 34.99|
//+---+-------------+--------------------+----------+--------------+------+

Using .textFile:

Результаты RDD[String], затем с помощью .split и .map нам нужно конвертировать RDD to dataframe.

spark.read.textFile("books").map(x => x.split("\\|")).
map(x =>(x(0),x(1),x(2),x(3),x(4),x(5))).
toDF().
show()
//+---+-------------+--------------------+----------+--------------+------+
//| _1|           _2|                  _3|        _4|            _5|    _6|
//+---+-------------+--------------------+----------+--------------+------+
//|  0|3-88623-803-7|           GARDENING|2003-11-07|   Editora FTD|174.99|
//|  1|5-72448-672-4|TECHNOLOGY-ENGINE...|2012-08-08|Wolters Kluwer|140.99|
//|  2|7-64433-458-3|      SOCIAL-SCIENCE|2015-11-14|  Bungeishunju|  7.99|
//|  3|1-18243-251-3|         MATHEMATICS|1997-02-22|Hachette Livre| 34.99|
//+---+-------------+--------------------+----------+--------------+------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...